Browse Source

s3, azblob: check upper limit for part size

Nicola Murino 4 years ago
parent
commit
14bcc6f2fc
2 changed files with 13 additions and 3 deletions
  1. 10 0
      httpd/httpd_test.go
  2. 3 3
      vfs/vfs.go

+ 10 - 0
httpd/httpd_test.go

@@ -409,6 +409,9 @@ func TestAddUserInvalidFsConfig(t *testing.T) {
 	u.FsConfig.S3Config.UploadPartSize = 3
 	_, _, err = httpd.AddUser(u, http.StatusBadRequest)
 	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.UploadConcurrency = -1
 	_, _, err = httpd.AddUser(u, http.StatusBadRequest)
@@ -450,6 +453,13 @@ func TestAddUserInvalidFsConfig(t *testing.T) {
 	u.FsConfig.AzBlobConfig.KeyPrefix = "/amedir/subdir/"
 	_, _, err = httpd.AddUser(u, http.StatusBadRequest)
 	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) {

+ 3 - 3
vfs/vfs.go

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