mirror of
https://github.com/nextcloud/server.git
synced 2026-03-04 22:41:13 -05:00
updateEncryptedVersion: cleanup on target if cache already got renamed
When moving a file to trash with encryption enabled, the cache gets moved before the actual file. According to @icewind1991 this is in order to not break object storage. When moving a file from an unencrypted storage (e.g. a collectives storage) to the encrypted trashbin storage, this causes errors, see This commit fixes it by doing `updateEncryptedVersion()` on the target cache entry *if* the source cache entry doesn't exist anymore, but the corresponding target cache entry does exist already. Fixes: #26544 Signed-off-by: Jonas Meurer <jonas@freesources.org>
This commit is contained in:
parent
db9fbc9307
commit
a2f4c62c19
1 changed files with 10 additions and 1 deletions
|
|
@ -694,7 +694,16 @@ class Encryption extends Wrapper {
|
|||
'encrypted' => $isEncrypted,
|
||||
];
|
||||
if ($isEncrypted) {
|
||||
$encryptedVersion = $sourceStorage->getCache()->get($sourceInternalPath)['encryptedVersion'];
|
||||
$sourceCacheEntry = $sourceStorage->getCache()->get($sourceInternalPath);
|
||||
$targetCacheEntry = $this->getCache()->get($targetInternalPath);
|
||||
|
||||
// Rename of the cache already happened, so we do the cleanup on the target
|
||||
if ($sourceCacheEntry === false && $targetCacheEntry !== false) {
|
||||
$encryptedVersion = $targetCacheEntry['encryptedVersion'];
|
||||
$isRename = false;
|
||||
} else {
|
||||
$encryptedVersion = $sourceCacheEntry['encryptedVersion'];
|
||||
}
|
||||
|
||||
// In case of a move operation from an unencrypted to an encrypted
|
||||
// storage the old encrypted version would stay with "0" while the
|
||||
|
|
|
|||
Loading…
Reference in a new issue