poppler/SecurityHandler.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
New commits: commit 9293e4bf9f6fa6513ddd51fe3426c39b54b1a49d Author: Albert Astals Cid <[email protected]> Date: Thu May 27 23:30:46 2021 +0200 Don't force ownerKey and userKey to be exacly 32 chars long The spec says that they have to be this long, but then when calculating the hashes says "if it is longer, cut it, if it is shorter, add these characters" (and we implement that) so it's a bit of spec mismatch. Fixes issue #1083 diff --git a/poppler/SecurityHandler.cc b/poppler/SecurityHandler.cc index 39f1131a..e5ec1007 100644 --- a/poppler/SecurityHandler.cc +++ b/poppler/SecurityHandler.cc @@ -144,7 +144,7 @@ StandardSecurityHandler::StandardSecurityHandler(PDFDoc *docA, Object *encryptDi if (versionObj.isInt() && revisionObj.isInt() && permObj.isInt() && ownerKeyObj.isString() && userKeyObj.isString()) { encVersion = versionObj.getInt(); encRevision = revisionObj.getInt(); - if ((encRevision <= 4 && ownerKeyObj.getString()->getLength() == 32 && userKeyObj.getString()->getLength() == 32) + if ((encRevision <= 4 && ownerKeyObj.getString()->getLength() >= 1 && userKeyObj.getString()->getLength() >= 1) || ((encRevision == 5 || encRevision == 6) && // the spec says 48 bytes, but Acrobat pads them out longer ownerKeyObj.getString()->getLength() >= 48 && userKeyObj.getString()->getLength() >= 48 && ownerEncObj.isString() && ownerEncObj.getString()->getLength() == 32 && userEncObj.isString() _______________________________________________ poppler mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/poppler
