reset encryptionVersion to '1' if a file was stream copied, because this means that we basically write the file from scratch
Signed-off-by: Bjoern Schiessle <bjoern@schiessle.org>
This commit is contained in:
parent
a0818ab6be
commit
d4f64b94f2
|
@ -651,13 +651,14 @@ class Encryption extends Wrapper {
|
|||
* @param string $sourceInternalPath
|
||||
* @param string $targetInternalPath
|
||||
* @param bool $isRename
|
||||
* @param bool $keepEncryptionVersion
|
||||
*/
|
||||
private function updateEncryptedVersion(Storage\IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $isRename) {
|
||||
$isEncrypted = $this->encryptionManager->isEnabled() && $this->shouldEncrypt($targetInternalPath) ? 1 : 0;
|
||||
private function updateEncryptedVersion(Storage\IStorage $sourceStorage, $sourceInternalPath, $targetInternalPath, $isRename, $keepEncryptionVersion) {
|
||||
$isEncrypted = $this->encryptionManager->isEnabled() && $this->shouldEncrypt($targetInternalPath);
|
||||
$cacheInformation = [
|
||||
'encrypted' => (bool)$isEncrypted,
|
||||
'encrypted' => $isEncrypted,
|
||||
];
|
||||
if($isEncrypted === 1) {
|
||||
if($isEncrypted) {
|
||||
$encryptedVersion = $sourceStorage->getCache()->get($sourceInternalPath)['encryptedVersion'];
|
||||
|
||||
// In case of a move operation from an unencrypted to an encrypted
|
||||
|
@ -665,7 +666,7 @@ class Encryption extends Wrapper {
|
|||
// correct value would be "1". Thus we manually set the value to "1"
|
||||
// for those cases.
|
||||
// See also https://github.com/owncloud/core/issues/23078
|
||||
if($encryptedVersion === 0) {
|
||||
if($encryptedVersion === 0 || !$keepEncryptionVersion) {
|
||||
$encryptedVersion = 1;
|
||||
}
|
||||
|
||||
|
@ -713,7 +714,7 @@ class Encryption extends Wrapper {
|
|||
$info['size']
|
||||
);
|
||||
}
|
||||
$this->updateEncryptedVersion($sourceStorage, $sourceInternalPath, $targetInternalPath, $isRename);
|
||||
$this->updateEncryptedVersion($sourceStorage, $sourceInternalPath, $targetInternalPath, $isRename, true);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
@ -756,7 +757,7 @@ class Encryption extends Wrapper {
|
|||
if ($preserveMtime) {
|
||||
$this->touch($targetInternalPath, $sourceStorage->filemtime($sourceInternalPath));
|
||||
}
|
||||
$this->updateEncryptedVersion($sourceStorage, $sourceInternalPath, $targetInternalPath, $isRename);
|
||||
$this->updateEncryptedVersion($sourceStorage, $sourceInternalPath, $targetInternalPath, $isRename, false);
|
||||
} else {
|
||||
// delete partially written target file
|
||||
$this->unlink($targetInternalPath);
|
||||
|
|
|
@ -806,7 +806,7 @@ class EncryptionTest extends Storage {
|
|||
'encrypted' => $expectedEncrypted,
|
||||
];
|
||||
if($expectedEncrypted === true) {
|
||||
$expectedCachePut['encryptedVersion'] = 12345;
|
||||
$expectedCachePut['encryptedVersion'] = 1;
|
||||
}
|
||||
|
||||
$this->arrayCache->expects($this->never())->method('set');
|
||||
|
|
Loading…
Reference in New Issue