summaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-03-22 04:02:49 +0800
committerGitHub <noreply@github.com>2023-03-21 16:02:49 -0400
commitce9dee5a1e8ae670c97621bca409d8cf43a90102 (patch)
tree6c9d8922dfae4bdcc1785340f2a866f805259988 /routers
parent253a00aaac6b17346927e42c709f3f96672caaf3 (diff)
downloadgitea-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.go6
-rw-r--r--routers/web/repo/editor.go2
-rw-r--r--routers/web/repo/lfs.go2
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")