try to fix unencrypted file size if it doesn't look plausible

This commit is contained in:
Bjoern Schiessle 2013-10-14 16:34:14 +02:00
parent e9ce704f17
commit 4151fd3ed9
1 changed files with 19 additions and 2 deletions

View File

@ -316,6 +316,16 @@ class Proxy extends \OC_FileProxy {
$view = new \OC_FilesystemView('/'); $view = new \OC_FilesystemView('/');
$userId = \OCP\User::getUser();
$util = new Util($view, $userId);
// if encryption is no longer enabled or if the files aren't migrated yet
// we return the default file size
if(!\OCP\App::isEnabled('files_encryption') ||
$util->getMigrationStatus() !== Util::MIGRATION_COMPLETED) {
return $size;
}
// if path is a folder do nothing // if path is a folder do nothing
if ($view->is_dir($path)) { if ($view->is_dir($path)) {
return $size; return $size;
@ -337,6 +347,15 @@ class Proxy extends \OC_FileProxy {
// if file is encrypted return real file size // if file is encrypted return real file size
if (is_array($fileInfo) && $fileInfo['encrypted'] === true) { if (is_array($fileInfo) && $fileInfo['encrypted'] === true) {
// try to fix unencrypted file size if it doesn't look plausible
if ((int)$fileInfo['size'] > 0 && (int)$fileInfo['encrypted_size'] === 0) {
$fixSize = $util->getFileSize($path);
$fileInfo['unencrypted_size'] = $fixSize;
// put file info if not .part file
if (!Keymanager::isPartialFilePath($relativePath)) {
$view->putFileInfo($path, $fileInfo);
}
}
$size = $fileInfo['unencrypted_size']; $size = $fileInfo['unencrypted_size'];
} else { } else {
// self healing if file was removed from file cache // self healing if file was removed from file cache
@ -344,8 +363,6 @@ class Proxy extends \OC_FileProxy {
$fileInfo = array(); $fileInfo = array();
} }
$userId = \OCP\User::getUser();
$util = new Util($view, $userId);
$fixSize = $util->getFileSize($path); $fixSize = $util->getFileSize($path);
if ($fixSize > 0) { if ($fixSize > 0) {
$size = $fixSize; $size = $fixSize;