From b689d5daff26b85ae18ce6c17029c010ef800657 Mon Sep 17 00:00:00 2001 From: krystiancha Date: Wed, 5 Mar 2025 08:48:59 +0100 Subject: [PATCH] webdav: remove path from LocalFileSystem path errors We don't want to show local paths in error messages. `os.Is*` calls were replaced with `errors.Is` to also match the new wrapped error. --- fs_local.go | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/fs_local.go b/fs_local.go index 51ec5f3..5b7344e 100644 --- a/fs_local.go +++ b/fs_local.go @@ -2,8 +2,10 @@ package webdav import ( "context" + "errors" "fmt" "io" + "io/fs" "mime" "net/http" "os" @@ -64,11 +66,17 @@ func fileInfoFromOS(p string, fi os.FileInfo) *FileInfo { } func errFromOS(err error) error { - if os.IsNotExist(err) { + // Remove path from path errors so it's not returned to the user + var perr *fs.PathError + if errors.As(err, &perr) { + err = fmt.Errorf("%s: %w", perr.Op, perr.Err) + } + + if errors.Is(err, fs.ErrNotExist) { return NewHTTPError(http.StatusNotFound, err) - } else if os.IsPermission(err) { + } else if errors.Is(err, fs.ErrPermission) { return NewHTTPError(http.StatusForbidden, err) - } else if os.IsTimeout(err) { + } else if errors.Is(err, os.ErrDeadlineExceeded) { return NewHTTPError(http.StatusServiceUnavailable, err) } else { return err