aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGiteabot <teabot@gitea.io>2023-07-06 15:04:26 -0400
committerGitHub <noreply@github.com>2023-07-06 21:04:26 +0200
commit03cacf971e902e488833e35512e56a36d0861ef8 (patch)
treed38a05f2030a047daadea11411344e00864a9cf7
parent68e0c802f7b68aef0f9969b3530ba13c7a5a5101 (diff)
downloadgitea-03cacf971e902e488833e35512e56a36d0861ef8.tar.gz
gitea-03cacf971e902e488833e35512e56a36d0861ef8.zip
Check `ctx.Written()` for `GetActionIssue` (#25698) (#25711)
Backport #25698 by @wolfogre Fix #25697. Just avoid panic, maybe there's another bug to trigger this case. Co-authored-by: Jason Song <i@wolfogre.com>
-rw-r--r--routers/web/repo/issue.go5
-rw-r--r--routers/web/repo/issue_content_history.go10
-rw-r--r--routers/web/repo/issue_pin.go3
-rw-r--r--routers/web/repo/pull.go2
-rw-r--r--routers/web/repo/pull_review.go11
5 files changed, 20 insertions, 11 deletions
diff --git a/routers/web/repo/issue.go b/routers/web/repo/issue.go
index 9884a5a9e8..52ccc0efa8 100644
--- a/routers/web/repo/issue.go
+++ b/routers/web/repo/issue.go
@@ -1958,7 +1958,7 @@ func GetActionIssue(ctx *context.Context) *issues_model.Issue {
return nil
}
if err = issue.LoadAttributes(ctx); err != nil {
- ctx.ServerError("LoadAttributes", nil)
+ ctx.ServerError("LoadAttributes", err)
return nil
}
return issue
@@ -3258,6 +3258,9 @@ func filterXRefComments(ctx *context.Context, issue *issues_model.Issue) error {
// GetIssueAttachments returns attachments for the issue
func GetIssueAttachments(ctx *context.Context) {
issue := GetActionIssue(ctx)
+ if ctx.Written() {
+ return
+ }
attachments := make([]*api.Attachment, len(issue.Attachments))
for i := 0; i < len(issue.Attachments); i++ {
attachments[i] = convert.ToAttachment(issue.Attachments[i])
diff --git a/routers/web/repo/issue_content_history.go b/routers/web/repo/issue_content_history.go
index 46a320a8cc..3dd7725c21 100644
--- a/routers/web/repo/issue_content_history.go
+++ b/routers/web/repo/issue_content_history.go
@@ -24,7 +24,7 @@ import (
// GetContentHistoryOverview get overview
func GetContentHistoryOverview(ctx *context.Context) {
issue := GetActionIssue(ctx)
- if issue == nil {
+ if ctx.Written() {
return
}
@@ -43,11 +43,11 @@ func GetContentHistoryOverview(ctx *context.Context) {
// GetContentHistoryList get list
func GetContentHistoryList(ctx *context.Context) {
issue := GetActionIssue(ctx)
- commentID := ctx.FormInt64("comment_id")
- if issue == nil {
+ if ctx.Written() {
return
}
+ commentID := ctx.FormInt64("comment_id")
items, _ := issues_model.FetchIssueContentHistoryList(ctx, issue.ID, commentID)
// render history list to HTML for frontend dropdown items: (name, value)
@@ -113,7 +113,7 @@ func canSoftDeleteContentHistory(ctx *context.Context, issue *issues_model.Issue
// GetContentHistoryDetail get detail
func GetContentHistoryDetail(ctx *context.Context) {
issue := GetActionIssue(ctx)
- if issue == nil {
+ if ctx.Written() {
return
}
@@ -179,7 +179,7 @@ func GetContentHistoryDetail(ctx *context.Context) {
// SoftDeleteContentHistory soft delete
func SoftDeleteContentHistory(ctx *context.Context) {
issue := GetActionIssue(ctx)
- if issue == nil {
+ if ctx.Written() {
return
}
diff --git a/routers/web/repo/issue_pin.go b/routers/web/repo/issue_pin.go
index 6586372fc5..bbfeaee6e8 100644
--- a/routers/web/repo/issue_pin.go
+++ b/routers/web/repo/issue_pin.go
@@ -15,6 +15,9 @@ import (
// IssuePinOrUnpin pin or unpin a Issue
func IssuePinOrUnpin(ctx *context.Context) {
issue := GetActionIssue(ctx)
+ if ctx.Written() {
+ return
+ }
// If we don't do this, it will crash when trying to add the pin event to the comment history
err := issue.LoadRepo(ctx)
diff --git a/routers/web/repo/pull.go b/routers/web/repo/pull.go
index cd401b88f0..e570c1753e 100644
--- a/routers/web/repo/pull.go
+++ b/routers/web/repo/pull.go
@@ -1470,10 +1470,10 @@ func DownloadPullDiffOrPatch(ctx *context.Context, patch bool) {
// UpdatePullRequestTarget change pull request's target branch
func UpdatePullRequestTarget(ctx *context.Context) {
issue := GetActionIssue(ctx)
- pr := issue.PullRequest
if ctx.Written() {
return
}
+ pr := issue.PullRequest
if !issue.IsPull {
ctx.Error(http.StatusNotFound)
return
diff --git a/routers/web/repo/pull_review.go b/routers/web/repo/pull_review.go
index cf1dfc181f..48a3628448 100644
--- a/routers/web/repo/pull_review.go
+++ b/routers/web/repo/pull_review.go
@@ -28,6 +28,9 @@ const (
// RenderNewCodeCommentForm will render the form for creating a new review comment
func RenderNewCodeCommentForm(ctx *context.Context) {
issue := GetActionIssue(ctx)
+ if ctx.Written() {
+ return
+ }
if !issue.IsPull {
return
}
@@ -52,10 +55,10 @@ func RenderNewCodeCommentForm(ctx *context.Context) {
func CreateCodeComment(ctx *context.Context) {
form := web.GetForm(ctx).(*forms.CodeCommentForm)
issue := GetActionIssue(ctx)
- if !issue.IsPull {
+ if ctx.Written() {
return
}
- if ctx.Written() {
+ if !issue.IsPull {
return
}
@@ -185,10 +188,10 @@ func renderConversation(ctx *context.Context, comment *issues_model.Comment) {
func SubmitReview(ctx *context.Context) {
form := web.GetForm(ctx).(*forms.SubmitReviewForm)
issue := GetActionIssue(ctx)
- if !issue.IsPull {
+ if ctx.Written() {
return
}
- if ctx.Written() {
+ if !issue.IsPull {
return
}
if ctx.HasError() {