on main help sign in
fix: improve path prefix checking reliability

- Replace HasPrefix implementation to use filepath.Rel instead of filepath.Abs - More reliable method to determine if a path is within a prefix - Returns false on error conditions - Preserves same public API for external usage This addresses review feedback about improving the path checking logic.

commit5b7951051df6aa5ab8d243e388c4357c166e9102 authorKujtim Hoxha <kujtimii.h@gmail.com> dateThu 31 Jul 2025, 20:33 (1 year ago) parent2ddc453
1 file changed+6−6
internal/fsext/fileutil.go+6−6
internal/fsext/fileutil.go+6−6
@@ -273,12 +273,12 @@ func PathOrPrefix(path, prefix string) string {
273273}
274274
275275// HasPrefix checks if the given path starts with the specified prefix.
276+// Uses filepath.Rel to determine if path is within prefix.
276277func HasPrefix(path, prefix string) bool {
277− if abs, err := filepath.Abs(path); err == nil {
278− path = abs
279− }
280− if abs, err := filepath.Abs(prefix); err == nil {
281− prefix = abs
278+ rel, err := filepath.Rel(prefix, path)
279+ if err != nil {
280+ return false
282281 }
283− return strings.HasPrefix(path, prefix)
282+ // If path is within prefix, Rel will not return a path starting with ".."
283+ return !strings.HasPrefix(rel, "..")
284284}