aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2021-12-16 17:40:18 +0000
committerGitHub <noreply@github.com>2021-12-16 17:40:18 +0000
commit6e7d28cf3aef9e91c435f841ec217bff5c750b87 (patch)
tree5889ba550874f0b6fd61674664809915152a0371 /modules
parente0e3ba6c12c4094dfb1ff0dc5f290214cf9bfe54 (diff)
downloadgitea-6e7d28cf3aef9e91c435f841ec217bff5c750b87.tar.gz
gitea-6e7d28cf3aef9e91c435f841ec217bff5c750b87.zip
Prevent double decoding of % in url params (#17997)
There was an unfortunate regression in #14293 which has led to the double decoding of url parameter elements if they contain a '%'. This is due to an issue with the way chi decodes its RoutePath. In detail the problem lies in mux.go where the routeHTTP path uses the URL.RawPath or even the URL.Path instead of the escaped path to do routing. This PR simply forcibly sets the routePath to that of the EscapedPath. Fix #17938 Signed-off-by: Andrew Thornton <art27@cantab.net>
Diffstat (limited to 'modules')
-rw-r--r--modules/context/context.go4
1 files changed, 4 insertions, 0 deletions
diff --git a/modules/context/context.go b/modules/context/context.go
index 88cf498f82..94e1f6cfff 100644
--- a/modules/context/context.go
+++ b/modules/context/context.go
@@ -609,6 +609,10 @@ func Contexter() func(next http.Handler) http.Handler {
var locale = middleware.Locale(resp, req)
var startTime = time.Now()
var link = setting.AppSubURL + strings.TrimSuffix(req.URL.EscapedPath(), "/")
+
+ chiCtx := chi.RouteContext(req.Context())
+ chiCtx.RoutePath = req.URL.EscapedPath()
+
var ctx = Context{
Resp: NewResponse(resp),
Cache: mc.GetCache(),