aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGiteabot <teabot@gitea.io>2024-01-07 18:40:30 +0800
committerGitHub <noreply@github.com>2024-01-07 10:40:30 +0000
commit2399b4d483162e182fc09a3c7ffaf6359a0b4d90 (patch)
treedfa16f0a9d9bff8280f43e8e3dea5471ceb5b1d4
parentad2cb9863c063c7d016baccda6fcd7aeb5518aad (diff)
downloadgitea-2399b4d483162e182fc09a3c7ffaf6359a0b4d90.tar.gz
gitea-2399b4d483162e182fc09a3c7ffaf6359a0b4d90.zip
Avoid unnecessary 500 panic when a commit doesn't exist (#28719) (#28721)
Backport #28719 by wxiaoguang In #26851, it assumed that `Commit` always exists when `PageIsDiff==true`. But for a 404 page, the `Commit` doesn't exist, so the following code would cause panic because nil value can't be passed as string parameter to `IsMultilineCommitMessage(string)` (or the StringUtils.Cut in later PRs) Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
-rw-r--r--templates/base/head_opengraph.tmpl2
-rw-r--r--tests/integration/repo_test.go10
2 files changed, 11 insertions, 1 deletions
diff --git a/templates/base/head_opengraph.tmpl b/templates/base/head_opengraph.tmpl
index 19d924610c..f1f38999d2 100644
--- a/templates/base/head_opengraph.tmpl
+++ b/templates/base/head_opengraph.tmpl
@@ -17,7 +17,7 @@
{{else if or .PageIsDiff .IsViewFile}}
<meta property="og:title" content="{{.Title}}">
<meta property="og:url" content="{{AppUrl}}{{.Link}}">
- {{if .PageIsDiff}}
+ {{if and .PageIsDiff .Commit}}
{{- $commitMessageParts := StringUtils.Cut .Commit.Message "\n" -}}
{{- $commitMessageBody := index $commitMessageParts 1 -}}
{{- if $commitMessageBody -}}
diff --git a/tests/integration/repo_test.go b/tests/integration/repo_test.go
index f5417b100c..f141b6dcb1 100644
--- a/tests/integration/repo_test.go
+++ b/tests/integration/repo_test.go
@@ -12,6 +12,7 @@ import (
"time"
"code.gitea.io/gitea/modules/setting"
+ "code.gitea.io/gitea/modules/test"
"code.gitea.io/gitea/tests"
"github.com/PuerkitoBio/goquery"
@@ -448,3 +449,12 @@ func TestGeneratedSourceLink(t *testing.T) {
assert.Equal(t, "/user27/repo49/src/commit/aacbdfe9e1c4b47f60abe81849045fa4e96f1d75/test/test.txt", dataURL)
})
}
+
+func TestViewCommit(t *testing.T) {
+ defer tests.PrepareTestEnv(t)()
+
+ req := NewRequest(t, "GET", "/user2/repo1/commit/0123456789012345678901234567890123456789")
+ req.Header.Add("Accept", "text/html")
+ resp := MakeRequest(t, req, http.StatusNotFound)
+ assert.True(t, test.IsNormalPageCompleted(resp.Body.String()), "non-existing commit should render 404 page")
+}