diff options
author | Mohammed Al Sahaf <[email protected]> | 2021-12-11 17:26:21 +0300 |
---|---|---|
committer | GitHub <[email protected]> | 2021-12-11 09:26:21 -0500 |
commit | 78b5356f2b1945a90de1ef7f2c7669d82098edbd (patch) | |
tree | 0e81d6cb2f48b5387cfee47c9a955afc32dde096 | |
parent | 6f9b6ad78e6b9a40afbf12e53017e39abee90a6d (diff) | |
download | caddy-78b5356f2b1945a90de1ef7f2c7669d82098edbd.tar.gz caddy-78b5356f2b1945a90de1ef7f2c7669d82098edbd.zip |
fileserver: do not double-escape paths (#4447)
-rw-r--r-- | modules/caddyhttp/caddyhttp.go | 2 | ||||
-rw-r--r-- | modules/caddyhttp/fileserver/browsetplcontext.go | 6 |
2 files changed, 3 insertions, 5 deletions
diff --git a/modules/caddyhttp/caddyhttp.go b/modules/caddyhttp/caddyhttp.go index 1404c796a..784b2b900 100644 --- a/modules/caddyhttp/caddyhttp.go +++ b/modules/caddyhttp/caddyhttp.go @@ -20,7 +20,6 @@ import ( "io" "net" "net/http" - "net/url" "path/filepath" "strconv" "strings" @@ -228,7 +227,6 @@ func StatusCodeMatches(actual, configured int) bool { // never be outside of root. The resulting path can be used // with the local file system. func SanitizedPathJoin(root, reqPath string) string { - reqPath, _ = url.PathUnescape(reqPath) if root == "" { root = "." } diff --git a/modules/caddyhttp/fileserver/browsetplcontext.go b/modules/caddyhttp/fileserver/browsetplcontext.go index b1b8e9e75..87156d48e 100644 --- a/modules/caddyhttp/fileserver/browsetplcontext.go +++ b/modules/caddyhttp/fileserver/browsetplcontext.go @@ -43,11 +43,9 @@ func (fsrv *FileServer) directoryListing(files []os.FileInfo, canGoUp bool, root isDir := f.IsDir() || isSymlinkTargetDir(f, root, urlPath) - u := url.URL{Path: url.PathEscape(name)} - // add the slash after the escape of path to avoid escaping the slash as well if isDir { - u.Path += "/" + name += "/" dirCount++ } else { fileCount++ @@ -67,6 +65,8 @@ func (fsrv *FileServer) directoryListing(files []os.FileInfo, canGoUp bool, root // was already set above. } + u := url.URL{Path: "./" + name} // prepend with "./" to fix paths with ':' in the name + fileInfos = append(fileInfos, fileInfo{ IsDir: isDir, IsSymlink: fileIsSymlink, |