Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: handle "x-amz-copy-source" header starting with '/' in s3api
The "x-amz-copy-source" header may start with '/' as observed with WinSCP. However, '/' is also the separator between the bucket and the object path in "x-amz-copy-source". Consider the following code in VerifyObjectCopyAccess(): srcBucket, srcObject, found := strings.Cut(copySource, "/") If `copySource` starts with '/', then `srcBucket` is set to an empty string. Later, an error is returned because bucket "" does not exist. This issue was fixed in the Posix and Azure backends by the following commit: * 5e484f2 fix: Fixed CopySource parsing to handle the values starting with '/' in CopyObject action in posix and azure backends. But the issue was not fixed in `VerifyObjectCopyAccess`. This commit sanitizes "x-amz-copy-source" right after the header is extracted in `s3api/controllers/base.go`. This ensures that the `CopySource` argument passed to the backend functions UploadPartCopy() and CopyObject() does not start with '/'. Since the backends no longer need to strip away any leading '/' in `CopySource`, the parts of commit 5e484f2 modifying the Posix and Azure backends are reverted. Fixes issue #773. Signed-off-by: Christophe Vu-Brugier <christophe.vu-brugier@seagate.com>
- Loading branch information