aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhiifong <f@ilo.nz>2025-01-19 10:51:43 +0800
committerGitHub <noreply@github.com>2025-01-19 02:51:43 +0000
commitb7614e2d2f2af246e33b8bd6a38ecfd1babc9ecc (patch)
tree8dae2bbf32f2a9c100ceb7a40b334668008a0610
parentdc2308a95908091c036011252fbca38980c8846c (diff)
downloadgitea-b7614e2d2f2af246e33b8bd6a38ecfd1babc9ecc.tar.gz
gitea-b7614e2d2f2af246e33b8bd6a38ecfd1babc9ecc.zip
Fix parentCommit invalid memory address or nil pointer dereference. (#33204)
When the parent Commit does not exist on gitea, an error will be reported when opening the Commit details page: invalid memory address or nil pointer dereference. ![image](https://github.com/user-attachments/assets/4c2a9802-935f-41e9-b5b9-a4f0d745f709) ![image](https://github.com/user-attachments/assets/7b0bc15e-7f5f-4d58-8d24-fee667a799fa)
-rw-r--r--modules/git/diff.go10
-rw-r--r--services/gitdiff/gitdiff.go6
2 files changed, 12 insertions, 4 deletions
diff --git a/modules/git/diff.go b/modules/git/diff.go
index 833f6220f9..da0a2f26ba 100644
--- a/modules/git/diff.go
+++ b/modules/git/diff.go
@@ -64,7 +64,10 @@ func GetRepoRawDiffForFile(repo *Repository, startCommit, endCommit string, diff
} else if commit.ParentCount() == 0 {
cmd.AddArguments("show").AddDynamicArguments(endCommit).AddDashesAndList(files...)
} else {
- c, _ := commit.Parent(0)
+ c, err := commit.Parent(0)
+ if err != nil {
+ return err
+ }
cmd.AddArguments("diff", "-M").AddDynamicArguments(c.ID.String(), endCommit).AddDashesAndList(files...)
}
case RawDiffPatch:
@@ -74,7 +77,10 @@ func GetRepoRawDiffForFile(repo *Repository, startCommit, endCommit string, diff
} else if commit.ParentCount() == 0 {
cmd.AddArguments("format-patch", "--no-signature", "--stdout", "--root").AddDynamicArguments(endCommit).AddDashesAndList(files...)
} else {
- c, _ := commit.Parent(0)
+ c, err := commit.Parent(0)
+ if err != nil {
+ return err
+ }
query := fmt.Sprintf("%s...%s", endCommit, c.ID.String())
cmd.AddArguments("format-patch", "--no-signature", "--stdout").AddDynamicArguments(query).AddDashesAndList(files...)
}
diff --git a/services/gitdiff/gitdiff.go b/services/gitdiff/gitdiff.go
index f42686bb71..f046e59678 100644
--- a/services/gitdiff/gitdiff.go
+++ b/services/gitdiff/gitdiff.go
@@ -1136,7 +1136,10 @@ func GetDiff(ctx context.Context, gitRepo *git.Repository, opts *DiffOptions, fi
} else {
actualBeforeCommitID := opts.BeforeCommitID
if len(actualBeforeCommitID) == 0 {
- parentCommit, _ := commit.Parent(0)
+ parentCommit, err := commit.Parent(0)
+ if err != nil {
+ return nil, err
+ }
actualBeforeCommitID = parentCommit.ID.String()
}
@@ -1145,7 +1148,6 @@ func GetDiff(ctx context.Context, gitRepo *git.Repository, opts *DiffOptions, fi
AddDynamicArguments(actualBeforeCommitID, opts.AfterCommitID)
opts.BeforeCommitID = actualBeforeCommitID
- var err error
beforeCommit, err = gitRepo.GetCommit(opts.BeforeCommitID)
if err != nil {
return nil, err