From 65df1d336fa9cf9db07b6d6d8e5135e769f41a0e Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sat, 15 Feb 2025 14:18:07 +0100 Subject: [PATCH] Check more of the stream when looking for commands after inline image (issue 19494) Currently we only check `followingBytes`, which turns out to be too short to find e.g. valid transform (cm) commands with decimal arguments. --- src/core/parser.js | 6 +++++- test/pdfs/issue19494.pdf.link | 1 + test/test_manifest.json | 9 +++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 test/pdfs/issue19494.pdf.link diff --git a/src/core/parser.js b/src/core/parser.js index 94b2e7894..50ea563db 100644 --- a/src/core/parser.js +++ b/src/core/parser.js @@ -248,8 +248,12 @@ class Parser { } // Check that the "EI" sequence isn't part of the image data, since // that would cause the image to be truncated (fixes issue11124.pdf). + // + // Check more than the `followingBytes` to be able to find operators + // with multiple arguments, e.g. transform (cm) with decimal arguments + // (fixes issue19494.pdf). const tmpLexer = new Lexer( - new Stream(followingBytes.slice()), + new Stream(stream.peekBytes(5 * n)), knownCommands ); // Reduce the number of (potential) warning messages. diff --git a/test/pdfs/issue19494.pdf.link b/test/pdfs/issue19494.pdf.link new file mode 100644 index 000000000..a60932082 --- /dev/null +++ b/test/pdfs/issue19494.pdf.link @@ -0,0 +1 @@ +https://github.com/user-attachments/files/18810079/VERAPDF-1335-InlineImage.pdf diff --git a/test/test_manifest.json b/test/test_manifest.json index f1b8f1d56..d4deda407 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -5617,6 +5617,15 @@ "rounds": 1, "type": "eq" }, + { + "id": "issue19494", + "file": "pdfs/issue19494.pdf", + "md5": "2ec2ccbe6aa7e622ef981ca5ca443d55", + "link": true, + "rounds": 1, + "type": "eq", + "lastPage": 1 + }, { "id": "issue11768", "file": "pdfs/issue11768_reduced.pdf",