vcl/source/pdf/PDFEncryptorR6.cxx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
New commits: commit aa36e523d609fb32e09a7643cf58e7d7b2b2a56e Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> AuthorDate: Tue Dec 24 15:35:30 2024 +0900 Commit: Miklos Vajna <vmik...@collabora.com> CommitDate: Thu Jan 2 13:45:13 2025 +0100 pdf: fix PDF encryption and re-enable the test Slightly wrong loop exit condition when calculating the R6 hash, which caused that every now and then the document could not be decrypted correctly. This happened at least 1 time in 100 tries (usually it did not even take that much to encountered a test failure), but with the fix it worked correctly for 500 tries, so it seems this issue is now fixed. Change-Id: I5fa046892f36dabc367aabed1295802e805ee6e4 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/179300 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Miklos Vajna <vmik...@collabora.com> diff --git a/vcl/source/pdf/PDFEncryptorR6.cxx b/vcl/source/pdf/PDFEncryptorR6.cxx index 52dceddc9636..6363ace090a8 100644 --- a/vcl/source/pdf/PDFEncryptorR6.cxx +++ b/vcl/source/pdf/PDFEncryptorR6.cxx @@ -235,7 +235,7 @@ std::vector<sal_uInt8> computeHashR6(const sal_uInt8* pPassword, size_t nPasswor } // Step e) and f) // We stop iteration if we do at least 64 rounds and (the last element of E <= round number - 32) - while (nRound < 64 || E.back() > (nRound - 32)); + while (nRound <= 64 || E.back() > (nRound - 32)); // Output - first 32 bytes return std::vector<sal_uInt8>(K.begin(), K.begin() + 32);