]> source.dussan.org Git - gitea.git/commit
Fix panic in storageHandler (#27446) (#27478)
authorGiteabot <teabot@gitea.io>
Fri, 6 Oct 2023 14:51:04 +0000 (22:51 +0800)
committerGitHub <noreply@github.com>
Fri, 6 Oct 2023 14:51:04 +0000 (16:51 +0200)
commit4ffa683820188175570ea3a0faf9d93046042b91
tree20cb02ea35734589deddd16982cda6058bf8f5d7
parent973b7f62989d16960fa918f5758ff2998317c352
Fix panic in storageHandler (#27446) (#27478)

Backport #27446 by @sryze

storageHandler() is written as a middleware but is used as an endpoint
handler, and thus `next` is actually `nil`, which causes a null pointer
dereference when a request URL does not match the pattern (where it
calls `next.ServerHTTP()`).

Example CURL command to trigger the panic:

```
curl -I "http://yourhost/gitea//avatars/a"
```

Fixes #27409

---

Note: the diff looks big but it's actually a small change - all I did
was to remove the outer closure (and one level of indentation) ~and
removed the HTTP method and pattern checks as they seem redundant
because go-chi already does those checks~. You might want to check "Hide
whitespace" when reviewing it.

Alternative solution (a bit simpler): append `, misc.DummyOK` to the
route declarations that utilize `storageHandler()` - this makes it
return an empty response when the URL is invalid. I've tested this one
and it works too. Or maybe it would be better to return a 400 error in
that case (?)

Co-authored-by: Sergey Zolotarev <sryze@outlook.com>
routers/web/base.go