From 66b31786d306675b882f08f8bdaf45f7624d441e Mon Sep 17 00:00:00 2001 From: zeripath Date: Sun, 8 Mar 2020 19:14:27 +0000 Subject: [PATCH] Prevent panic in stopwatch (#10670) (#10673) 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 3b7c20d4d..1da0323f0 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" @@ -172,19 +173,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 }