Merge pull request #9453 from owncloud/enc_fix_wrong_file_size

[encryption] always take unencrypted size
This commit is contained in:
Frank Karlitschek 2014-07-06 10:38:06 -04:00
commit a468687682
2 changed files with 10 additions and 6 deletions

View File

@ -157,8 +157,8 @@ class Proxy extends \OC_FileProxy {
// store new unenecrypted size so that it can be updated
// in the post proxy
$tmpFileInfo = $view->getFileInfo($tmpPath);
if ( isset($tmpFileInfo['size']) ) {
self::$unencryptedSizes[\OC\Files\Filesystem::normalizePath($path)] = $tmpFileInfo['size'];
if ( isset($tmpFileInfo['unencrypted_size']) ) {
self::$unencryptedSizes[\OC\Files\Filesystem::normalizePath($path)] = $tmpFileInfo['unencrypted_size'];
}
// remove our temp file

View File

@ -47,6 +47,7 @@ class Test_Encryption_Proxy extends \PHPUnit_Framework_TestCase {
public $view; // view in /data/user/files
public $rootView; // view on /data/user
public $data;
public $dataLong;
public $filename;
public static function setUpBeforeClass() {
@ -80,6 +81,7 @@ class Test_Encryption_Proxy extends \PHPUnit_Framework_TestCase {
// init short data
$this->data = 'hats';
$this->dataLong = file_get_contents(__DIR__ . '/../lib/crypt.php');
$this->filename = 'enc_proxy_tests-' . uniqid() . '.txt';
}
@ -95,17 +97,19 @@ class Test_Encryption_Proxy extends \PHPUnit_Framework_TestCase {
*/
function testPostFileSize() {
$this->view->file_put_contents($this->filename, $this->data);
$this->view->file_put_contents($this->filename, $this->dataLong);
$size = strlen($this->dataLong);
\OC_FileProxy::$enabled = false;
$unencryptedSize = $this->view->filesize($this->filename);
$encryptedSize = $this->view->filesize($this->filename);
\OC_FileProxy::$enabled = true;
$encryptedSize = $this->view->filesize($this->filename);
$unencryptedSize = $this->view->filesize($this->filename);
$this->assertTrue($encryptedSize !== $unencryptedSize);
$this->assertTrue($encryptedSize > $unencryptedSize);
$this->assertSame($size, $unencryptedSize);
// cleanup
$this->view->unlink($this->filename);