on main help sign in
fix: improve path prefix checking reliability
5b79510Kujtim Hoxha
internal/fsext/fileutil.go+6−6
@@ -273,12 +273,12 @@ func PathOrPrefix(path, prefix string) string {
273}
273}
274
274
275// HasPrefix checks if the given path starts with the specified prefix.
275// HasPrefix checks if the given path starts with the specified prefix.
276+// Uses filepath.Rel to determine if path is within prefix.
276func HasPrefix(path, prefix string) bool {
277func HasPrefix(path, prefix string) bool {
277− if abs, err := filepath.Abs(path); err == nil {
278+ rel, err := filepath.Rel(prefix, path)
278− path = abs
279− }
280− if abs, err := filepath.Abs(prefix); err == nil {
279+ if err != nil {
281− prefix = abs
280+ return false
282 }
281 }
282+ // If path is within prefix, Rel will not return a path starting with ".."
283− return strings.HasPrefix(path, prefix)
283+ return !strings.HasPrefix(rel, "..")
284}
284}