@@ -273,12 +273,12 @@ func PathOrPrefix(path, prefix string) string {
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)
280− if abs, err := filepath.Abs(prefix); err == nil {
279+ if err != nil {
281− prefix = abs
280+ return false
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, "..")