s3, azblob: check upper limit for part size

This commit is contained in:
Nicola Murino
2020-10-25 12:10:11 +01:00
parent 975a2f3632
commit 14bcc6f2fc
2 changed files with 13 additions and 3 deletions

View File

@@ -409,6 +409,9 @@ func TestAddUserInvalidFsConfig(t *testing.T) {
u.FsConfig.S3Config.UploadPartSize = 3 u.FsConfig.S3Config.UploadPartSize = 3
_, _, err = httpd.AddUser(u, http.StatusBadRequest) _, _, err = httpd.AddUser(u, http.StatusBadRequest)
assert.NoError(t, err) assert.NoError(t, err)
u.FsConfig.S3Config.UploadPartSize = 5001
_, _, err = httpd.AddUser(u, http.StatusBadRequest)
assert.NoError(t, err)
u.FsConfig.S3Config.UploadPartSize = 0 u.FsConfig.S3Config.UploadPartSize = 0
u.FsConfig.S3Config.UploadConcurrency = -1 u.FsConfig.S3Config.UploadConcurrency = -1
_, _, err = httpd.AddUser(u, http.StatusBadRequest) _, _, err = httpd.AddUser(u, http.StatusBadRequest)
@@ -450,6 +453,13 @@ func TestAddUserInvalidFsConfig(t *testing.T) {
u.FsConfig.AzBlobConfig.KeyPrefix = "/amedir/subdir/" u.FsConfig.AzBlobConfig.KeyPrefix = "/amedir/subdir/"
_, _, err = httpd.AddUser(u, http.StatusBadRequest) _, _, err = httpd.AddUser(u, http.StatusBadRequest)
assert.NoError(t, err) assert.NoError(t, err)
u.FsConfig.AzBlobConfig.KeyPrefix = "amedir/subdir/"
u.FsConfig.AzBlobConfig.UploadPartSize = -1
_, _, err = httpd.AddUser(u, http.StatusBadRequest)
assert.NoError(t, err)
u.FsConfig.AzBlobConfig.UploadPartSize = 101
_, _, err = httpd.AddUser(u, http.StatusBadRequest)
assert.NoError(t, err)
} }
func TestAddUserInvalidVirtualFolders(t *testing.T) { func TestAddUserInvalidVirtualFolders(t *testing.T) {

View File

@@ -241,8 +241,8 @@ func ValidateS3FsConfig(config *S3FsConfig) error {
config.KeyPrefix += "/" config.KeyPrefix += "/"
} }
} }
if config.UploadPartSize != 0 && config.UploadPartSize < 5 { if config.UploadPartSize != 0 && (config.UploadPartSize < 5 || config.UploadPartSize > 5000) {
return errors.New("upload_part_size cannot be != 0 and lower than 5 (MB)") return errors.New("upload_part_size cannot be != 0, lower than 5 (MB) or greater than 5000 (MB)")
} }
if config.UploadConcurrency < 0 { if config.UploadConcurrency < 0 {
return fmt.Errorf("invalid upload concurrency: %v", config.UploadConcurrency) return fmt.Errorf("invalid upload concurrency: %v", config.UploadConcurrency)
@@ -297,7 +297,7 @@ func ValidateAzBlobFsConfig(config *AzBlobFsConfig) error {
config.KeyPrefix += "/" config.KeyPrefix += "/"
} }
} }
if config.UploadPartSize < 0 { if config.UploadPartSize < 0 || config.UploadPartSize > 100 {
return fmt.Errorf("invalid upload part size: %v", config.UploadPartSize) return fmt.Errorf("invalid upload part size: %v", config.UploadPartSize)
} }
if config.UploadConcurrency < 0 { if config.UploadConcurrency < 0 {