diff --git a/changelog/unreleased/do-not-panic-when-moving-missing-files.md b/changelog/unreleased/do-not-panic-when-moving-missing-files.md new file mode 100644 index 0000000000..f272b34a7a --- /dev/null +++ b/changelog/unreleased/do-not-panic-when-moving-missing-files.md @@ -0,0 +1,5 @@ +Bugfix: Prevent panic when trying to move a non-existent file + +We fixed a panic when the user tried to move a file which does not exist. + +https://github.com/cs3org/reva/pull/4283 diff --git a/internal/http/services/owncloud/ocdav/move.go b/internal/http/services/owncloud/ocdav/move.go index d0550ae624..f08e308177 100644 --- a/internal/http/services/owncloud/ocdav/move.go +++ b/internal/http/services/owncloud/ocdav/move.go @@ -144,6 +144,8 @@ func (s *svc) handleMove(ctx context.Context, w http.ResponseWriter, r *http.Req isChild, err := s.referenceIsChildOf(ctx, s.gatewaySelector, dst, src) if err != nil { switch err.(type) { + case errtypes.IsNotFound: + w.WriteHeader(http.StatusNotFound) case errtypes.IsNotSupported: log.Error().Err(err).Msg("can not detect recursive move operation. missing machine auth configuration?") w.WriteHeader(http.StatusForbidden) diff --git a/internal/http/services/owncloud/ocdav/ocdav.go b/internal/http/services/owncloud/ocdav/ocdav.go index af7c7eb8ac..217de400fb 100644 --- a/internal/http/services/owncloud/ocdav/ocdav.go +++ b/internal/http/services/owncloud/ocdav/ocdav.go @@ -339,6 +339,9 @@ func (s *svc) sspReferenceIsChildOf(ctx context.Context, selector pool.Selectabl if err != nil { return false, err } + if parentStatRes.Status.Code != rpc.Code_CODE_OK { + return false, errtypes.NewErrtypeFromStatus(parentStatRes.Status) + } parentAuthCtx, err := authContextForUser(client, parentStatRes.Info.Owner, s.c.MachineAuthAPIKey) if err != nil { return false, err