Correctly check if the real file exists, otherwise try the part file
This commit is contained in:
parent
6c3a4282e5
commit
9b336765b6
2 changed files with 24 additions and 10 deletions
|
@ -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) {
|
||||
|
|
|
@ -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'),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue