Skip to content

fix(files): preserve encryptedVersion when copying cache entries#62255

Open
leftybournes wants to merge 2 commits into
masterfrom
leftybournes/fix/cache-include-encrypted-version
Open

fix(files): preserve encryptedVersion when copying cache entries#62255
leftybournes wants to merge 2 commits into
masterfrom
leftybournes/fix/cache-include-encrypted-version

Conversation

@leftybournes

Copy link
Copy Markdown
Member

Summary

Cache::copyFromCache() rebuilt the target's cache row via cacheEntryToArray(), which only carried over a boolean encrypted flag and dropped the real encryptedVersion count. Since View::copy() unconditionally calls copyFromCache() after the storage copy completes, this silently overwrote the correct encryptedVersion that Encryption::updateEncryptedVersion() had just set, collapsing it back to 0/1 on every copy of a file whose encryptedVersion was above 1.

cacheEntryToArray() now includes the source entry's encryptedVersion when it is encrypted. The existing encrypted-to-non-encrypted-storage override in copyFromCache() also clears encryptedVersion alongside
encrypted, since normalizeData() prefers encryptedVersion over encrypted when both are present in the update data.

Checklist

AI (if applicable)

  • The content of this PR was partly or fully generated using AI

Cache::copyFromCache() rebuilt the target's cache row via
cacheEntryToArray(), which only carried over a boolean `encrypted`
flag and dropped the real `encryptedVersion` count. Since
View::copy() unconditionally calls copyFromCache() after the storage
copy completes, this silently overwrote the correct encryptedVersion
that Encryption::updateEncryptedVersion() had just set, collapsing it
back to 0/1 on every copy of a file whose encryptedVersion was above 1.

cacheEntryToArray() now includes the source entry's encryptedVersion
when it is encrypted. The existing encrypted-to-non-encrypted-storage
override in copyFromCache() also clears encryptedVersion alongside
`encrypted`, since normalizeData() prefers encryptedVersion over
`encrypted` when both are present in the update data.

Signed-off-by: Kent Delante <kent@delante.me>
Assisted-by: ClaudeCode:claude-sonnet-5
Signed-off-by: Kent Delante <kent@delante.me>
Assisted-by: ClaudeCode:claude-sonnet-5
@leftybournes leftybournes added this to the Nextcloud 35 milestone Jul 17, 2026
@leftybournes
leftybournes requested a review from a team as a code owner July 17, 2026 00:24
@leftybournes
leftybournes requested review from Altahrim, come-nc, icewind1991 and salmart-dev and removed request for a team July 17, 2026 00:24
@leftybournes leftybournes changed the title Leftybournes/fix/cache include encrypted version fix(files): preserve encryptedVersion when copying cache entries Jul 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Encrypted files become corrupted after restoring a version

2 participants