diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2023-03-22 04:02:49 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-21 16:02:49 -0400 |
commit | ce9dee5a1e8ae670c97621bca409d8cf43a90102 (patch) | |
tree | 6c9d8922dfae4bdcc1785340f2a866f805259988 /routers | |
parent | 253a00aaac6b17346927e42c709f3f96672caaf3 (diff) | |
download | gitea-ce9dee5a1e8ae670c97621bca409d8cf43a90102.tar.gz gitea-ce9dee5a1e8ae670c97621bca409d8cf43a90102.zip |
Introduce path Clean/Join helper functions (#23495)
Since #23493 has conflicts with latest commits, this PR is my proposal
for fixing #23371
Details are in the comments
And refactor the `modules/options` module, to make it always use
"filepath" to access local files.
Benefits:
* No need to do `util.CleanPath(strings.ReplaceAll(p, "\\", "/"))),
"/")` any more (not only one before)
* The function behaviors are clearly defined
Diffstat (limited to 'routers')
-rw-r--r-- | routers/web/base.go | 6 | ||||
-rw-r--r-- | routers/web/repo/editor.go | 2 | ||||
-rw-r--r-- | routers/web/repo/lfs.go | 2 |
3 files changed, 5 insertions, 5 deletions
diff --git a/routers/web/base.go b/routers/web/base.go index 2eb0b6f391..da18a75643 100644 --- a/routers/web/base.go +++ b/routers/web/base.go @@ -45,7 +45,7 @@ func storageHandler(storageSetting setting.Storage, prefix string, objStore stor routing.UpdateFuncInfo(req.Context(), funcInfo) rPath := strings.TrimPrefix(req.URL.Path, "/"+prefix+"/") - rPath = util.CleanPath(strings.ReplaceAll(rPath, "\\", "/")) + rPath = util.PathJoinRelX(rPath) u, err := objStore.URL(rPath, path.Base(rPath)) if err != nil { @@ -81,8 +81,8 @@ func storageHandler(storageSetting setting.Storage, prefix string, objStore stor routing.UpdateFuncInfo(req.Context(), funcInfo) rPath := strings.TrimPrefix(req.URL.Path, "/"+prefix+"/") - rPath = util.CleanPath(strings.ReplaceAll(rPath, "\\", "/")) - if rPath == "" { + rPath = util.PathJoinRelX(rPath) + if rPath == "" || rPath == "." { http.Error(w, "file not found", http.StatusNotFound) return } diff --git a/routers/web/repo/editor.go b/routers/web/repo/editor.go index 4f208098e4..07241b8870 100644 --- a/routers/web/repo/editor.go +++ b/routers/web/repo/editor.go @@ -726,7 +726,7 @@ func UploadFilePost(ctx *context.Context) { func cleanUploadFileName(name string) string { // Rebase the filename - name = strings.Trim(util.CleanPath(name), "/") + name = util.PathJoinRel(name) // Git disallows any filenames to have a .git directory in them. for _, part := range strings.Split(name, "/") { if strings.ToLower(part) == ".git" { diff --git a/routers/web/repo/lfs.go b/routers/web/repo/lfs.go index 43f5527986..9957869c99 100644 --- a/routers/web/repo/lfs.go +++ b/routers/web/repo/lfs.go @@ -207,7 +207,7 @@ func LFSLockFile(ctx *context.Context) { ctx.Redirect(ctx.Repo.RepoLink + "/settings/lfs/locks") return } - lockPath = util.CleanPath(lockPath) + lockPath = util.PathJoinRel(lockPath) if len(lockPath) == 0 { ctx.Flash.Error(ctx.Tr("repo.settings.lfs_invalid_locking_path", originalPath)) ctx.Redirect(ctx.Repo.RepoLink + "/settings/lfs/locks") |