Skip to content

Commit 795cbb6

Browse files
harshavardhanadeekoder
authored andcommitted
Relax bucket name validation to support existing buckets. (#778)
Fixes minio/mc#2229
1 parent 1388110 commit 795cbb6

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

pkg/s3utils/utils.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ func EncodePath(pathName string) string {
205205
// We support '.' with bucket names but we fallback to using path
206206
// style requests instead for such buckets.
207207
var (
208-
validBucketName = regexp.MustCompile(`^[A-Za-z0-9][A-Za-z0-9\.\-]{1,61}[A-Za-z0-9]$`)
208+
validBucketName = regexp.MustCompile(`^[A-Za-z0-9][A-Za-z0-9\.\-\_\:]{1,61}[A-Za-z0-9]$`)
209209
validBucketNameStrict = regexp.MustCompile(`^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$`)
210210
ipAddress = regexp.MustCompile(`^(\d+\.){3}\d+$`)
211211
)
@@ -240,14 +240,13 @@ func checkBucketNameCommon(bucketName string, strict bool) (err error) {
240240
}
241241

242242
// CheckValidBucketName - checks if we have a valid input bucket name.
243-
// This is a non stricter version.
244-
// - http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html
245243
func CheckValidBucketName(bucketName string) (err error) {
246244
return checkBucketNameCommon(bucketName, false)
247245
}
248246

249247
// CheckValidBucketNameStrict - checks if we have a valid input bucket name.
250248
// This is a stricter version.
249+
// - http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucket.html
251250
func CheckValidBucketNameStrict(bucketName string) (err error) {
252251
return checkBucketNameCommon(bucketName, true)
253252
}

pkg/s3utils/utils_test.go

+4
Original file line numberDiff line numberDiff line change
@@ -301,10 +301,14 @@ func TestIsValidBucketName(t *testing.T) {
301301
{"", errors.New("Bucket name cannot be empty"), false},
302302
{"my..bucket", errors.New("Bucket name contains invalid characters"), false},
303303
{"192.168.1.168", errors.New("Bucket name cannot be an ip address"), false},
304+
{":bucketname", errors.New("Bucket name contains invalid characters"), false},
305+
{"_bucketName", errors.New("Bucket name contains invalid characters"), false},
304306
{"my.bucket.com", nil, true},
305307
{"my-bucket", nil, true},
306308
{"123my-bucket", nil, true},
307309
{"Mybucket", nil, true},
310+
{"My_bucket", nil, true},
311+
{"My:bucket", nil, true},
308312
}
309313

310314
for i, testCase := range testCases {

0 commit comments

Comments
 (0)