@@ -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}