Browse Source

sftpd: fix the max upload file size check for overwrites

improved test case too
Nicola Murino 4 năm trước cách đây
mục cha
commit
975a2f3632
4 tập tin đã thay đổi với 15 bổ sung3 xóa
  1. 5 0
      ftpd/ftpd_test.go
  2. 0 3
      sftpd/handler.go
  3. 5 0
      sftpd/sftpd_test.go
  4. 5 0
      webdavd/webdavd_test.go

+ 5 - 0
ftpd/ftpd_test.go

@@ -824,6 +824,11 @@ func TestUploadMaxSize(t *testing.T) {
 		assert.Error(t, err)
 		err = ftpUploadFile(testFilePath, testFileName, testFileSize, client, 0)
 		assert.NoError(t, err)
+		// now test overwrite an existing file with a size bigger than the allowed one
+		err = createTestFile(filepath.Join(user.GetHomeDir(), testFileName1), testFileSize1)
+		assert.NoError(t, err)
+		err = ftpUploadFile(testFilePath1, testFileName1, testFileSize1, client, 0)
+		assert.Error(t, err)
 		err = client.Quit()
 		assert.NoError(t, err)
 	}

+ 0 - 3
sftpd/handler.go

@@ -391,9 +391,6 @@ func (c *Connection) handleSFTPUploadToExistingFile(pflags sftp.FileOpenFlags, r
 		} else {
 			initialSize = fileSize
 		}
-		if maxWriteSize > 0 && isTruncate {
-			maxWriteSize += fileSize
-		}
 	}
 
 	vfs.SetPathPermissions(c.Fs, filePath, c.User.GetUID(), c.User.GetGID())

+ 5 - 0
sftpd/sftpd_test.go

@@ -2482,6 +2482,11 @@ func TestUploadMaxSize(t *testing.T) {
 		assert.Error(t, err)
 		err = sftpUploadFile(testFilePath, testFileName, testFileSize, client)
 		assert.NoError(t, err)
+		// now test overwrite an existing file with a size bigger than the allowed one
+		err = createTestFile(filepath.Join(user.GetHomeDir(), testFileName1), testFileSize1)
+		assert.NoError(t, err)
+		err = sftpUploadFile(testFilePath1, testFileName1, testFileSize1, client)
+		assert.Error(t, err)
 	}
 	err = os.Remove(testFilePath)
 	assert.NoError(t, err)

+ 5 - 0
webdavd/webdavd_test.go

@@ -701,6 +701,11 @@ func TestUploadMaxSize(t *testing.T) {
 	assert.Error(t, err)
 	err = uploadFile(testFilePath, testFileName, testFileSize, client)
 	assert.NoError(t, err)
+	// now test overwrite an existing file with a size bigger than the allowed one
+	err = createTestFile(filepath.Join(user.GetHomeDir(), testFileName1), testFileSize1)
+	assert.NoError(t, err)
+	err = uploadFile(testFilePath1, testFileName1, testFileSize1, client)
+	assert.Error(t, err)
 
 	err = os.Remove(testFilePath)
 	assert.NoError(t, err)