diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2015-06-26 16:01:41 +0200 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2015-06-26 16:01:41 +0200 |
commit | ac9412639333b6876f7b4b9d0c9f1d2035890c58 (patch) | |
tree | f6f1bf28bd30c396a7541d787e77fb8cd7f0172c | |
parent | b318b9cf17a1225e0b43f659ea279b54fd61bf07 (diff) | |
parent | 9b336765b69bf7b7e2cd67a824862411b249aa4d (diff) | |
download | nextcloud-server-ac9412639333b6876f7b4b9d0c9f1d2035890c58.tar.gz nextcloud-server-ac9412639333b6876f7b4b9d0c9f1d2035890c58.zip |
Merge pull request #17191 from owncloud/issue-17188-group-share-part-file
Correctly check if the real file exists, otherwise try the part file
-rw-r--r-- | lib/private/files/storage/wrapper/encryption.php | 8 | ||||
-rw-r--r-- | tests/lib/files/storage/wrapper/encryption.php | 26 |
2 files changed, 24 insertions, 10 deletions
diff --git a/lib/private/files/storage/wrapper/encryption.php b/lib/private/files/storage/wrapper/encryption.php index 8d1f80c53c0..675978da2a9 100644 --- a/lib/private/files/storage/wrapper/encryption.php +++ b/lib/private/files/storage/wrapper/encryption.php @@ -350,7 +350,7 @@ class Encryption extends Wrapper { $size = $unencryptedSize = 0; $realFile = $this->util->stripPartialFileExtension($path); - $targetExists = $this->file_exists($realFile); + $targetExists = $this->file_exists($realFile) || $this->file_exists($path); $targetIsEncrypted = false; if ($targetExists) { // in case the file exists we require the explicit module as @@ -608,7 +608,11 @@ class Encryption extends Wrapper { $header = ''; $realFile = $this->util->stripPartialFileExtension($path); if ($this->storage->file_exists($realFile)) { - $handle = $this->storage->fopen($realFile, 'r'); + $path = $realFile; + } + + if ($this->storage->file_exists($path)) { + $handle = $this->storage->fopen($path, 'r'); $firstBlock = fread($handle, $this->util->getHeaderSize()); fclose($handle); if (substr($firstBlock, 0, strlen(Util::HEADER_START)) === Util::HEADER_START) { diff --git a/tests/lib/files/storage/wrapper/encryption.php b/tests/lib/files/storage/wrapper/encryption.php index 175713de497..a10e95a3f8b 100644 --- a/tests/lib/files/storage/wrapper/encryption.php +++ b/tests/lib/files/storage/wrapper/encryption.php @@ -381,10 +381,12 @@ class Encryption extends \Test\Files\Storage\Storage { /** * @dataProvider dataTestGetHeader - * @param $path - * @param $strippedPath + * + * @param string $path + * @param bool $strippedPathExists + * @param string $strippedPath */ - public function testGetHeader($path, $strippedPath) { + public function testGetHeader($path, $strippedPathExists, $strippedPath) { $sourceStorage = $this->getMockBuilder('\OC\Files\Storage\Storage') ->disableOriginalConstructor()->getMock(); @@ -409,17 +411,25 @@ class Encryption extends \Test\Files\Storage\Storage { $util->expects($this->once())->method('stripPartialFileExtension') ->with($path)->willReturn($strippedPath); - $sourceStorage->expects($this->once())->method('file_exists') - ->with($strippedPath)->willReturn(false); + $sourceStorage->expects($this->at(0)) + ->method('file_exists') + ->with($strippedPath) + ->willReturn($strippedPathExists); + $sourceStorage->expects($this->at(1)) + ->method('file_exists') + ->with($strippedPathExists ? $strippedPath : $path) + ->willReturn(false); $this->invokePrivate($instance, 'getHeader', [$path]); } public function dataTestGetHeader() { return array( - array('/foo/bar.txt', '/foo/bar.txt'), - array('/foo/bar.txt.part', '/foo/bar.txt'), - array('/foo/bar.txt.ocTransferId7437493.part', '/foo/bar.txt'), + array('/foo/bar.txt', false, '/foo/bar.txt'), + array('/foo/bar.txt.part', false, '/foo/bar.txt'), + array('/foo/bar.txt.ocTransferId7437493.part', false, '/foo/bar.txt'), + array('/foo/bar.txt.part', true, '/foo/bar.txt'), + array('/foo/bar.txt.ocTransferId7437493.part', true, '/foo/bar.txt'), ); } } |