Skip to content
Snippets Groups Projects
Commit 9b336765 authored by Joas Schilling's avatar Joas Schilling
Browse files

Correctly check if the real file exists, otherwise try the part file

parent 6c3a4282
Branches
No related tags found
No related merge requests found
......@@ -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'),
);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment