From ad79c626c6fa54b28988197e91dc9f29148de31b Mon Sep 17 00:00:00 2001 From: Nitish Tiwari Date: Tue, 26 Jun 2018 06:54:00 +0530 Subject: [PATCH] Throw 404 for head requests for prefixes without trailing "/" (#5966) Minio server returns 403 (access denied) for head requests to prefixes without trailing "/", this is different from S3 behaviour. S3 returns 404 in such cases. Fixes #6080 --- cmd/fs-v1-helpers.go | 8 +++----- cmd/fs-v1-helpers_test.go | 2 +- cmd/fs-v1.go | 2 +- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/cmd/fs-v1-helpers.go b/cmd/fs-v1-helpers.go index e8ea6cd8f..3a797127e 100644 --- a/cmd/fs-v1-helpers.go +++ b/cmd/fs-v1-helpers.go @@ -199,7 +199,7 @@ func osErrToFSFileErr(err error) error { return errFileAccessDenied } if isSysErrNotDir(err) { - return errFileAccessDenied + return errFileNotFound } if isSysErrPathNotFound(err) { return errFileNotFound @@ -218,8 +218,7 @@ func fsStatDir(ctx context.Context, statDir string) (os.FileInfo, error) { return nil, err } if !fi.IsDir() { - logger.LogIf(ctx, errFileAccessDenied) - return nil, errFileAccessDenied + return nil, errFileNotFound } return fi, nil } @@ -244,8 +243,7 @@ func fsStatFile(ctx context.Context, statFile string) (os.FileInfo, error) { return nil, err } if fi.IsDir() { - logger.LogIf(ctx, errFileAccessDenied) - return nil, errFileAccessDenied + return nil, errFileNotFound } return fi, nil } diff --git a/cmd/fs-v1-helpers_test.go b/cmd/fs-v1-helpers_test.go index 0df862a3c..3010d68fa 100644 --- a/cmd/fs-v1-helpers_test.go +++ b/cmd/fs-v1-helpers_test.go @@ -136,7 +136,7 @@ func TestFSStats(t *testing.T) { srcFSPath: path, srcVol: "success-vol", srcPath: "path", - expectedErr: errFileAccessDenied, + expectedErr: errFileNotFound, }, // Test case - 6. // Test case with src path segment > 255. diff --git a/cmd/fs-v1.go b/cmd/fs-v1.go index f34ef671f..36c121863 100644 --- a/cmd/fs-v1.go +++ b/cmd/fs-v1.go @@ -696,7 +696,7 @@ func (fs *FSObjects) getObjectInfoWithLock(ctx context.Context, bucket, object s } if _, err := fs.statBucketDir(ctx, bucket); err != nil { - return oi, toObjectErr(err, bucket) + return oi, err } if strings.HasSuffix(object, slashSeparator) && !fs.isObjectDir(bucket, object) {