From 77362700e16c45097fe6f1411d2d70e8ef82a42a Mon Sep 17 00:00:00 2001 From: chrislu Date: Tue, 18 Jan 2022 12:04:40 -0800 Subject: [PATCH] S3: fail fast when "X-Amz-Copy-Source" is a folder fix #2593 --- weed/s3api/s3api_object_copy_handlers.go | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/weed/s3api/s3api_object_copy_handlers.go b/weed/s3api/s3api_object_copy_handlers.go index 5c082eeda..f62db9c31 100644 --- a/weed/s3api/s3api_object_copy_handlers.go +++ b/weed/s3api/s3api_object_copy_handlers.go @@ -34,11 +34,7 @@ func (s3a *S3ApiServer) CopyObjectHandler(w http.ResponseWriter, r *http.Request fullPath := util.FullPath(fmt.Sprintf("%s/%s%s", s3a.option.BucketsPath, dstBucket, dstObject)) dir, name := fullPath.DirAndName() entry, err := s3a.getEntry(dir, name) - if err != nil { - s3err.WriteErrorResponse(w, r, s3err.ErrInvalidCopySource) - return - } - if entry.IsDirectory { + if err != nil || entry.IsDirectory { s3err.WriteErrorResponse(w, r, s3err.ErrInvalidCopySource) return } @@ -62,8 +58,7 @@ func (s3a *S3ApiServer) CopyObjectHandler(w http.ResponseWriter, r *http.Request } srcPath := util.FullPath(fmt.Sprintf("%s/%s%s", s3a.option.BucketsPath, srcBucket, srcObject)) dir, name := srcPath.DirAndName() - _, err = s3a.getEntry(dir, name) - if err != nil { + if entry, err := s3a.getEntry(dir, name); err != nil || entry.IsDirectory { s3err.WriteErrorResponse(w, r, s3err.ErrInvalidCopySource) return }