Fix isSubPath to allow filenames starting with ".."

This commit is contained in:
2026-06-24 14:28:32 +08:00
parent e2af482cc9
commit a289130dcd
2 changed files with 25 additions and 1 deletions
+7 -1
View File
@@ -6,6 +6,7 @@ import (
"io"
"os"
"path/filepath"
"strings"
)
// LocalStorage implements StorageBackend using the local filesystem.
@@ -87,5 +88,10 @@ func isSubPath(base, target string) bool {
if err != nil {
return false
}
return rel != ".." && !filepath.IsAbs(rel) && rel[:2] != ".."
if filepath.IsAbs(rel) {
return false
}
// Reject paths that escape the base directory.
// filepath.Rel returns ".." or starts with "../" for paths outside base.
return rel != ".." && !strings.HasPrefix(rel, ".."+string(filepath.Separator))
}