From 2ac6f2b129fd6d955ac0fdb4dcf46efd5163f3b3 Mon Sep 17 00:00:00 2001 From: yp05327 <576951401@qq.com> Date: Wed, 11 Dec 2024 03:42:52 +0900 Subject: [PATCH] Fix internal server error when updating labels without write permission (#32776) Fix #32775 if permission denined, `prepareForReplaceOrAdd` will return nothing, and this case is not handled. --- routers/api/v1/repo/issue_label.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/routers/api/v1/repo/issue_label.go b/routers/api/v1/repo/issue_label.go index 2f5ea8931b..cc517619e9 100644 --- a/routers/api/v1/repo/issue_label.go +++ b/routers/api/v1/repo/issue_label.go @@ -319,6 +319,11 @@ func prepareForReplaceOrAdd(ctx *context.APIContext, form api.IssueLabelsOption) return nil, nil, err } + if !ctx.Repo.CanWriteIssuesOrPulls(issue.IsPull) { + ctx.Error(http.StatusForbidden, "CanWriteIssuesOrPulls", "write permission is required") + return nil, nil, fmt.Errorf("permission denied") + } + var ( labelIDs []int64 labelNames []string @@ -350,10 +355,5 @@ func prepareForReplaceOrAdd(ctx *context.APIContext, form api.IssueLabelsOption) return nil, nil, err } - if !ctx.Repo.CanWriteIssuesOrPulls(issue.IsPull) { - ctx.Status(http.StatusForbidden) - return nil, nil, nil - } - return issue, labels, err }