From 975a2f363265b340914bc19a109c61f1a91bc709 Mon Sep 17 00:00:00 2001 From: Nicola Murino Date: Sun, 25 Oct 2020 08:52:31 +0100 Subject: [PATCH] sftpd: fix the max upload file size check for overwrites improved test case too --- ftpd/ftpd_test.go | 5 +++++ sftpd/handler.go | 3 --- sftpd/sftpd_test.go | 5 +++++ webdavd/webdavd_test.go | 5 +++++ 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/ftpd/ftpd_test.go b/ftpd/ftpd_test.go index 7328ac99..66f366dc 100644 --- a/ftpd/ftpd_test.go +++ b/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) } diff --git a/sftpd/handler.go b/sftpd/handler.go index 18148182..b262c9c7 100644 --- a/sftpd/handler.go +++ b/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()) diff --git a/sftpd/sftpd_test.go b/sftpd/sftpd_test.go index 6b4852f9..712074f2 100644 --- a/sftpd/sftpd_test.go +++ b/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) diff --git a/webdavd/webdavd_test.go b/webdavd/webdavd_test.go index fae1f900..a5cfe756 100644 --- a/webdavd/webdavd_test.go +++ b/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)