forked from gitea/gitea
		
	If you attempt to merge to a branch which on a PR there will be a nil pointer error in the pull request checker. This panic is uncaught and will bring down the gitea server. This PR adds protection to prevent this. Co-authored-by: zeripath <art27@cantab.net>
This commit is contained in:
		
							parent
							
								
									919f3f11e2
								
							
						
					
					
						commit
						7284327a00
					
				| @ -351,6 +351,17 @@ func doBranchProtectPRMerge(baseCtx *APITestContext, dstPath string) func(t *tes | ||||
| 			pr, err = doAPICreatePullRequest(ctx, baseCtx.Username, baseCtx.Reponame, "protected", "unprotected")(t) | ||||
| 			assert.NoError(t, err) | ||||
| 		}) | ||||
| 		t.Run("GenerateCommit", func(t *testing.T) { | ||||
| 			_, err := generateCommitWithNewData(littleSize, dstPath, "user2@example.com", "User Two", "branch-data-file-") | ||||
| 			assert.NoError(t, err) | ||||
| 		}) | ||||
| 		t.Run("PushToUnprotectedBranch", doGitPushTestRepository(dstPath, "origin", "protected:unprotected-2")) | ||||
| 		var pr2 api.PullRequest | ||||
| 		t.Run("CreatePullRequest", func(t *testing.T) { | ||||
| 			pr2, err = doAPICreatePullRequest(ctx, baseCtx.Username, baseCtx.Reponame, "unprotected", "unprotected-2")(t) | ||||
| 			assert.NoError(t, err) | ||||
| 		}) | ||||
| 		t.Run("MergePR2", doAPIMergePullRequest(ctx, baseCtx.Username, baseCtx.Reponame, pr2.Index)) | ||||
| 		t.Run("MergePR", doAPIMergePullRequest(ctx, baseCtx.Username, baseCtx.Reponame, pr.Index)) | ||||
| 		t.Run("PullProtected", doGitPull(dstPath, "origin", "protected")) | ||||
| 		t.Run("ProtectProtectedBranchWhitelist", doProtectBranch(ctx, "protected", baseCtx.Username)) | ||||
|  | ||||
| @ -231,6 +231,10 @@ func PushToBaseRepo(pr *models.PullRequest) (err error) { | ||||
| 		} | ||||
| 	}() | ||||
| 
 | ||||
| 	if err := pr.LoadHeadRepo(); err != nil { | ||||
| 		log.Error("Unable to load head repository for PR[%d] Error: %v", pr.ID, err) | ||||
| 		return err | ||||
| 	} | ||||
| 	headRepoPath := pr.HeadRepo.RepoPath() | ||||
| 
 | ||||
| 	if err := git.Clone(headRepoPath, tmpBasePath, git.CloneRepoOptions{ | ||||
| @ -247,6 +251,10 @@ func PushToBaseRepo(pr *models.PullRequest) (err error) { | ||||
| 		return fmt.Errorf("OpenRepository: %v", err) | ||||
| 	} | ||||
| 
 | ||||
| 	if err := pr.LoadBaseRepo(); err != nil { | ||||
| 		log.Error("Unable to load base repository for PR[%d] Error: %v", pr.ID, err) | ||||
| 		return err | ||||
| 	} | ||||
| 	if err := gitRepo.AddRemote("base", pr.BaseRepo.RepoPath(), false); err != nil { | ||||
| 		return fmt.Errorf("tmpGitRepo.AddRemote: %v", err) | ||||
| 	} | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 guillep2k
						guillep2k