Edit issue API returns 500 #13482

Closed
opened 2025-11-02 10:43:44 -06:00 by GiteaMirror · 5 comments
Owner

Originally created by @dimasrespect on GitHub (Sep 12, 2024).

Description

When using API endpoint: PATCH /repos/{owner}/{repo}/issues/{index} server returns 500 (internal server error):

PANIC: runtime error: invalid memory address or nil pointer dereference
/usr/local/go/src/runtime/panic.go:785 (0x477751)
/source/modules/web/routing/logger_manager.go:116 (0x1e85ba8)
/usr/local/go/src/runtime/panic.go:785 (0x477751)
/usr/local/go/src/runtime/panic.go:262 (0x479bd8)
/usr/local/go/src/runtime/signal_unix.go:900 (0x479ba8)
/source/routers/api/v1/repo/issue.go:836 (0x29dbd9a)
/usr/local/go/src/reflect/value.go:581 (0x504ea5)
/usr/local/go/src/reflect/value.go:365 (0x503fb8)
/source/modules/web/handler.go:172 (0x1e8f63c)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/modules/web/handler.go:182 (0x1e8f6db)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/modules/web/handler.go:182 (0x1e8f6db)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/modules/web/handler.go:182 (0x1e8f6db)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/modules/web/handler.go:182 (0x1e8f6db)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/modules/web/handler.go:182 (0x1e8f6db)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/modules/web/handler.go:182 (0x1e8f6db)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/go/pkg/mod/github.com/go-chi/chi/v5@v5.0.13/chain.go:31 (0x1e86485)
/go/pkg/mod/github.com/go-chi/chi/v5@v5.0.13/mux.go:459 (0x1e89421)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/modules/web/handler.go:182 (0x1e8f6db)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/modules/web/handler.go:182 (0x1e8f6db)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/modules/web/handler.go:182 (0x1e8f6db)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/services/context/api.go:238 (0x2a599bd)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/modules/web/handler.go:136 (0x1e8fad9)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/routers/api/v1/api.go:1615 (0x2a59556)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/modules/web/handler.go:136 (0x1e8fad9)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/go/pkg/mod/github.com/go-chi/chi/v5@v5.0.13/mux.go:73 (0x1e8702e)
/go/pkg/mod/github.com/go-chi/chi/v5@v5.0.13/mux.go:327 (0x1e889ba)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/go/pkg/mod/github.com/go-chi/chi/v5@v5.0.13/mux.go:459 (0x1e89421)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/modules/web/routing/logger_manager.go:122 (0x1e85a38)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/modules/web/handler.go:136 (0x1e8fad9)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/go/pkg/mod/github.com/chi-middleware/proxy@v1.1.1/middleware.go:37 (0x29b2a93)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/modules/web/handler.go:136 (0x1e8fad9)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/routers/common/middleware.go:59 (0x29b3c6f)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/modules/web/handler.go:136 (0x1e8fad9)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/routers/common/middleware.go:50 (0x29b37fb)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/modules/web/handler.go:136 (0x1e8fad9)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/routers/common/middleware.go:36 (0x29b3429)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/source/modules/web/handler.go:136 (0x1e8fad9)
/usr/local/go/src/net/http/server.go:2220 (0x96c328)
/go/pkg/mod/github.com/go-chi/chi/v5@v5.0.13/mux.go:90 (0x1e86fed)
/source/modules/web/route.go:225 (0x1e9133b)
/source/modules/web/route.go:165 (0x1e90e64)
/usr/local/go/src/net/http/server.go:3210 (0x98c88d)
/usr/local/go/src/net/http/server.go:2092 (0x96accf)
/usr/local/go/src/runtime/asm_amd64.s:1700 (0x480160)

Gitea Version

1.22.2

Can you reproduce the bug on the Gitea demo site?

Yes

Log Gist

No response

Screenshots

No response

Git Version

2.30.2

Operating System

Debian

How are you running Gitea?

Was tested on demo.gitea.com, latest release and latest nightly build. Error is everywhere.

Database

PostgreSQL

Originally created by @dimasrespect on GitHub (Sep 12, 2024). ### Description When using API endpoint: `PATCH /repos/{owner}/{repo}/issues/{index}` server returns 500 (internal server error): PANIC: runtime error: invalid memory address or nil pointer dereference /usr/local/go/src/runtime/panic.go:785 (0x477751) /source/modules/web/routing/logger_manager.go:116 (0x1e85ba8) /usr/local/go/src/runtime/panic.go:785 (0x477751) /usr/local/go/src/runtime/panic.go:262 (0x479bd8) /usr/local/go/src/runtime/signal_unix.go:900 (0x479ba8) /source/routers/api/v1/repo/issue.go:836 (0x29dbd9a) /usr/local/go/src/reflect/value.go:581 (0x504ea5) /usr/local/go/src/reflect/value.go:365 (0x503fb8) /source/modules/web/handler.go:172 (0x1e8f63c) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/modules/web/handler.go:182 (0x1e8f6db) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/modules/web/handler.go:182 (0x1e8f6db) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/modules/web/handler.go:182 (0x1e8f6db) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/modules/web/handler.go:182 (0x1e8f6db) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/modules/web/handler.go:182 (0x1e8f6db) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/modules/web/handler.go:182 (0x1e8f6db) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /go/pkg/mod/github.com/go-chi/chi/v5@v5.0.13/chain.go:31 (0x1e86485) /go/pkg/mod/github.com/go-chi/chi/v5@v5.0.13/mux.go:459 (0x1e89421) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/modules/web/handler.go:182 (0x1e8f6db) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/modules/web/handler.go:182 (0x1e8f6db) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/modules/web/handler.go:182 (0x1e8f6db) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/services/context/api.go:238 (0x2a599bd) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/modules/web/handler.go:136 (0x1e8fad9) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/routers/api/v1/api.go:1615 (0x2a59556) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/modules/web/handler.go:136 (0x1e8fad9) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /go/pkg/mod/github.com/go-chi/chi/v5@v5.0.13/mux.go:73 (0x1e8702e) /go/pkg/mod/github.com/go-chi/chi/v5@v5.0.13/mux.go:327 (0x1e889ba) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /go/pkg/mod/github.com/go-chi/chi/v5@v5.0.13/mux.go:459 (0x1e89421) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/modules/web/routing/logger_manager.go:122 (0x1e85a38) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/modules/web/handler.go:136 (0x1e8fad9) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /go/pkg/mod/github.com/chi-middleware/proxy@v1.1.1/middleware.go:37 (0x29b2a93) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/modules/web/handler.go:136 (0x1e8fad9) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/routers/common/middleware.go:59 (0x29b3c6f) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/modules/web/handler.go:136 (0x1e8fad9) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/routers/common/middleware.go:50 (0x29b37fb) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/modules/web/handler.go:136 (0x1e8fad9) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/routers/common/middleware.go:36 (0x29b3429) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /source/modules/web/handler.go:136 (0x1e8fad9) /usr/local/go/src/net/http/server.go:2220 (0x96c328) /go/pkg/mod/github.com/go-chi/chi/v5@v5.0.13/mux.go:90 (0x1e86fed) /source/modules/web/route.go:225 (0x1e9133b) /source/modules/web/route.go:165 (0x1e90e64) /usr/local/go/src/net/http/server.go:3210 (0x98c88d) /usr/local/go/src/net/http/server.go:2092 (0x96accf) /usr/local/go/src/runtime/asm_amd64.s:1700 (0x480160) ### Gitea Version 1.22.2 ### Can you reproduce the bug on the Gitea demo site? Yes ### Log Gist _No response_ ### Screenshots _No response_ ### Git Version 2.30.2 ### Operating System Debian ### How are you running Gitea? Was tested on demo.gitea.com, latest release and latest nightly build. Error is everywhere. ### Database PostgreSQL
GiteaMirror added the issue/confirmedtopic/apitype/bug labels 2025-11-02 10:43:44 -06:00
Author
Owner

@techknowlogick commented on GitHub (Sep 12, 2024):

Thanks for the report, are you able to share an example of the contents of the PATCH payload?

@techknowlogick commented on GitHub (Sep 12, 2024): Thanks for the report, are you able to share an example of the contents of the PATCH payload?
Author
Owner

@dimasrespect commented on GitHub (Sep 12, 2024):

I think, i found the problem. It's here: f05d9c98c4/routers/api/v1/repo/issue.go (L836)

Some additional check is required here. I'm making request with "unset_due_date": false and i'm not providing due_date field. In this case form.Deadline is undefined and error happens. So there are should be additional check, something like this:
if (form.RemoveDeadline == nil || !*form.RemoveDeadline) && form.Deadline != nil && !form.Deadline.IsZero() {

@dimasrespect commented on GitHub (Sep 12, 2024): I think, i found the problem. It's here: https://github.com/go-gitea/gitea/blob/f05d9c98c4cb95e3a8a71bf3e2f8f4529e09f96f/routers/api/v1/repo/issue.go#L836 Some additional check is required here. I'm making request with `"unset_due_date": false` and i'm not providing `due_date` field. In this case `form.Deadline` is undefined and error happens. So there are should be additional check, something like this: `if (form.RemoveDeadline == nil || !*form.RemoveDeadline) && form.Deadline != nil && !form.Deadline.IsZero() {`
Author
Owner

@dimasrespect commented on GitHub (Sep 12, 2024):

Here is sample payload to reproduce issue:
{ "assignee": "user_login", "assignees": [ "user_login" ], "body": "custom comment", "milestone": 0, "title": "Edited issue", "unset_due_date": false }

@dimasrespect commented on GitHub (Sep 12, 2024): Here is sample payload to reproduce issue: `{ "assignee": "user_login", "assignees": [ "user_login" ], "body": "custom comment", "milestone": 0, "title": "Edited issue", "unset_due_date": false }`
Author
Owner

@dimasrespect commented on GitHub (Sep 12, 2024):

Or may be it should return 412 error (bad request) in this case? So can understand that i'm doing something wrong ;)

@dimasrespect commented on GitHub (Sep 12, 2024): Or may be it should return 412 error (bad request) in this case? So can understand that i'm doing something wrong ;)
Author
Owner

@Zettat123 commented on GitHub (Sep 13, 2024):

I think a 400 error should be returned if the unset_due_date is set to false without providing a due_date

@Zettat123 commented on GitHub (Sep 13, 2024): I think a 400 error should be returned if the `unset_due_date` is set to `false` without providing a `due_date`
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/gitea#13482