diff --git a/cmd/bucket-handlers_test.go b/cmd/bucket-handlers_test.go index c323b32be..666ce482f 100644 --- a/cmd/bucket-handlers_test.go +++ b/cmd/bucket-handlers_test.go @@ -355,7 +355,7 @@ func testListMultipartUploadsHandler(obj ObjectLayer, instanceType, bucketName s maxUploads: "0", accessKey: credentials.AccessKey, secretKey: credentials.SecretKey, - expectedRespStatus: http.StatusNotFound, + expectedRespStatus: http.StatusBadRequest, shouldPass: false, }, // Test case - 2. diff --git a/cmd/bucket-policy-handlers_test.go b/cmd/bucket-policy-handlers_test.go index 70f396965..a1c20ce54 100644 --- a/cmd/bucket-policy-handlers_test.go +++ b/cmd/bucket-policy-handlers_test.go @@ -289,7 +289,7 @@ func testPutBucketPolicyHandler(obj ObjectLayer, instanceType, bucketName string policyLen: len(fmt.Sprintf(bucketPolicyTemplate, bucketName, bucketName)), accessKey: credentials.AccessKey, secretKey: credentials.SecretKey, - expectedRespStatus: http.StatusNotFound, + expectedRespStatus: http.StatusBadRequest, }, // Test case - 10. // Existent bucket with policy with Version field empty. @@ -463,7 +463,7 @@ func testGetBucketPolicyHandler(obj ObjectLayer, instanceType, bucketName string accessKey: credentials.AccessKey, secretKey: credentials.SecretKey, expectedBucketPolicy: "", - expectedRespStatus: http.StatusNotFound, + expectedRespStatus: http.StatusBadRequest, }, } // Iterating over the cases, fetching the policy and validating the response. @@ -686,7 +686,7 @@ func testDeleteBucketPolicyHandler(obj ObjectLayer, instanceType, bucketName str bucketName: ".invalid-bucket-name", accessKey: credentials.AccessKey, secretKey: credentials.SecretKey, - expectedRespStatus: http.StatusNotFound, + expectedRespStatus: http.StatusBadRequest, }, } // Iterating over the cases and deleting the bucket policy and then asserting response. diff --git a/cmd/generic-handlers.go b/cmd/generic-handlers.go index 5107bed5d..4d56c7b98 100644 --- a/cmd/generic-handlers.go +++ b/cmd/generic-handlers.go @@ -29,6 +29,7 @@ import ( "time" "github.com/dustin/go-humanize" + "github.com/minio/minio-go/v7/pkg/s3utils" "github.com/minio/minio-go/v7/pkg/set" xnet "github.com/minio/pkg/net" @@ -400,6 +401,17 @@ func setRequestValidityMiddleware(h http.Handler) http.Handler { writeErrorResponse(r.Context(), w, errorCodes.ToAPIErr(ErrAllAccessDisabled), r.URL) return } + } else { + // Validate bucket names if it is not empty + if bucketName != "" && s3utils.CheckValidBucketNameStrict(bucketName) != nil { + if ok { + tc.FuncName = "handler.ValidRequest" + tc.ResponseRecorder.LogErrBody = true + } + defer logger.AuditLog(r.Context(), w, r, mustGetClaimsFromToken(r)) + writeErrorResponse(r.Context(), w, errorCodes.ToAPIErr(ErrInvalidBucketName), r.URL) + return + } } // Deny SSE-C requests if not made over TLS if !globalIsTLS && (crypto.SSEC.IsRequested(r.Header) || crypto.SSECopy.IsRequested(r.Header)) {