From 034839ebe53d26824f14b16bccefcc7a77439613 Mon Sep 17 00:00:00 2001 From: Gusted Date: Sun, 20 Mar 2022 20:26:59 +0100 Subject: [PATCH] Fix NPE /repos/issues/search when not signed in (#19154) - Backport #19154 - Don't panic when on `/repos/issues/search?{created,assigned,mentioned,review_requested}=true` when client didn't pass any authentication. - Resolves #19115 --- routers/api/v1/repo/issue.go | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/routers/api/v1/repo/issue.go b/routers/api/v1/repo/issue.go index 5137c7246ed50..c6e08b00f38cd 100644 --- a/routers/api/v1/repo/issue.go +++ b/routers/api/v1/repo/issue.go @@ -245,18 +245,23 @@ func SearchIssues(ctx *context.APIContext) { UpdatedAfterUnix: since, } + ctxUserID := int64(0) + if ctx.IsSigned { + ctxUserID = ctx.User.ID + } + // Filter for: Created by User, Assigned to User, Mentioning User, Review of User Requested if ctx.FormBool("created") { - issuesOpt.PosterID = ctx.User.ID + issuesOpt.PosterID = ctxUserID } if ctx.FormBool("assigned") { - issuesOpt.AssigneeID = ctx.User.ID + issuesOpt.AssigneeID = ctxUserID } if ctx.FormBool("mentioned") { - issuesOpt.MentionedID = ctx.User.ID + issuesOpt.MentionedID = ctxUserID } if ctx.FormBool("review_requested") { - issuesOpt.ReviewRequestedID = ctx.User.ID + issuesOpt.ReviewRequestedID = ctxUserID } if issues, err = models.Issues(issuesOpt); err != nil { @@ -599,7 +604,7 @@ func CreateIssue(ctx *context.APIContext) { DeadlineUnix: deadlineUnix, } - var assigneeIDs = make([]int64, 0) + assigneeIDs := make([]int64, 0) var err error if ctx.Repo.CanWrite(unit.TypeIssues) { issue.MilestoneID = form.Milestone