aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2023-02-07 14:57:29 -0800
committerchrislu <chris.lu@gmail.com>2023-02-07 14:57:29 -0800
commit1c2364936ae9a2aac0b111626ac2b9a936756bac (patch)
treef9961fab31cf29f83201ec46cc08dc4883e516cd
parent5de93fe4420b14ca63378cff0a5d2565920cb511 (diff)
downloadseaweedfs-1c2364936ae9a2aac0b111626ac2b9a936756bac.tar.xz
seaweedfs-1c2364936ae9a2aac0b111626ac2b9a936756bac.zip
detect invalid bucket name
fix https://github.com/seaweedfs/seaweedfs/issues/4143
-rw-r--r--weed/s3api/s3api_bucket_handlers.go9
1 files changed, 9 insertions, 0 deletions
diff --git a/weed/s3api/s3api_bucket_handlers.go b/weed/s3api/s3api_bucket_handlers.go
index 9e215db9e..9a430b337 100644
--- a/weed/s3api/s3api_bucket_handlers.go
+++ b/weed/s3api/s3api_bucket_handlers.go
@@ -6,6 +6,7 @@ import (
"errors"
"fmt"
"github.com/aws/aws-sdk-go/private/protocol/xml/xmlutil"
+ "github.com/seaweedfs/seaweedfs/weed/s3api/s3bucket"
"github.com/seaweedfs/seaweedfs/weed/util"
"math"
"net/http"
@@ -84,6 +85,14 @@ func (s3a *S3ApiServer) PutBucketHandler(w http.ResponseWriter, r *http.Request)
bucket, _ := s3_constants.GetBucketAndObject(r)
glog.V(3).Infof("PutBucketHandler %s", bucket)
+ // validate the bucket name
+ err := s3bucket.VerifyS3BucketName(bucket)
+ if err != nil {
+ glog.Errorf("put invalid bucket name: %v %v", bucket, err)
+ s3err.WriteErrorResponse(w, r, s3err.ErrInvalidBucketName)
+ return
+ }
+
// avoid duplicated buckets
errCode := s3err.ErrNone
if err := s3a.WithFilerClient(false, func(client filer_pb.SeaweedFilerClient) error {