From e6681857d2bb79adc8bed3c9a512fec2d4069c59 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 8 Jun 2015 15:36:54 +0200 Subject: Check if the part files has keys when the original file does not --- lib/private/encryption/keys/storage.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'lib/private') diff --git a/lib/private/encryption/keys/storage.php b/lib/private/encryption/keys/storage.php index fa317851a56..848d5c0134a 100644 --- a/lib/private/encryption/keys/storage.php +++ b/lib/private/encryption/keys/storage.php @@ -72,7 +72,17 @@ class Storage implements IStorage { public function getFileKey($path, $keyId, $encryptionModuleId) { $realFile = $this->util->stripPartialFileExtension($path); $keyDir = $this->getFileKeyDir($encryptionModuleId, $realFile); - return $this->getKey($keyDir . $keyId); + $key = $this->getKey($keyDir . $keyId); + + if ($key === '' && $realFile !== $path) { + // Check if the part file has keys and use them, if no normal keys + // exist. This is required to fix copyBetweenStorage() when we + // rename a .part file over storage borders. + $keyDir = $this->getFileKeyDir($encryptionModuleId, $path); + $key = $this->getKey($keyDir . $keyId); + } + + return $key; } /** -- cgit v1.2.3