diff --git a/phpseclib/Net/SFTP.php b/phpseclib/Net/SFTP.php index f87a0aee..1013b4e8 100644 --- a/phpseclib/Net/SFTP.php +++ b/phpseclib/Net/SFTP.php @@ -1877,11 +1877,6 @@ class SFTP extends SSH2 if ($local_start >= 0) { fseek($fp, $local_start); $size-= $local_start; - } elseif ($mode & self::RESUME_START) { - // do nothing - } else { - fseek($fp, $offset); - $size-= $offset; } } elseif ($dataCallback) { $size = 0; diff --git a/tests/Functional/Net/SFTPUserStoryTest.php b/tests/Functional/Net/SFTPUserStoryTest.php index 6e607c30..fcc41eda 100644 --- a/tests/Functional/Net/SFTPUserStoryTest.php +++ b/tests/Functional/Net/SFTPUserStoryTest.php @@ -659,14 +659,20 @@ class Functional_Net_SFTPUserStoryTest extends PhpseclibFunctionalTestCase * @depends testStatVsLstat * @group github830 */ - public function testEndlessLoopOnUpload($sftp) + public function testUploadOffsets($sftp) { - $sftp->put('endless.txt', 'res.txt', SFTP::SOURCE_LOCAL_FILE, 0, 10); - + $sftp->put('offset.txt', 'res.txt', SFTP::SOURCE_LOCAL_FILE, 0, 10); $this->assertSame( substr(self::$exampleData, 10), - $sftp->get('endless.txt'), + $sftp->get('offset.txt'), 'Failed asserting that portions of a file could be uploaded.' ); + + $sftp->put('offset.txt', 'res.txt', SFTP::SOURCE_LOCAL_FILE, self::$exampleDataLength - 100); + $this->assertSame( + substr(self::$exampleData, 10, -90) . self::$exampleData, + $sftp->get('offset.txt'), + 'Failed asserting that you could upload into the middle of a file.' + ); } }