From 33c5e5e7fa8ace0f8921b600736f126d752aa0ef Mon Sep 17 00:00:00 2001 From: zeripath Date: Sun, 8 Mar 2020 17:46:24 +0000 Subject: [PATCH] Prevent panic in stopwatch (#10670) Signed-off-by: Andrew Thornton --- routers/api/v1/repo/issue_stopwatch.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/routers/api/v1/repo/issue_stopwatch.go b/routers/api/v1/repo/issue_stopwatch.go index 01faa0d6b1..c8525e502c 100644 --- a/routers/api/v1/repo/issue_stopwatch.go +++ b/routers/api/v1/repo/issue_stopwatch.go @@ -5,6 +5,7 @@ package repo import ( + "errors" "net/http" "code.gitea.io/gitea/models" @@ -173,19 +174,21 @@ func prepareIssueStopwatch(ctx *context.APIContext, shouldExist bool) (*models.I if !ctx.Repo.CanWriteIssuesOrPulls(issue.IsPull) { ctx.Status(http.StatusForbidden) - return nil, err + return nil, errors.New("Unable to write to PRs") } if !ctx.Repo.CanUseTimetracker(issue, ctx.User) { ctx.Status(http.StatusForbidden) - return nil, err + return nil, errors.New("Cannot use time tracker") } if models.StopwatchExists(ctx.User.ID, issue.ID) != shouldExist { if shouldExist { ctx.Error(http.StatusConflict, "StopwatchExists", "cannot stop/cancel a non existent stopwatch") + err = errors.New("cannot stop/cancel a non existent stopwatch") } else { ctx.Error(http.StatusConflict, "StopwatchExists", "cannot start a stopwatch again if it already exists") + err = errors.New("cannot start a stopwatch again if it already exists") } return nil, err }