pypdf 6.21.0
- Source
- https://github.com/py-pdf/pypdf
- Tag scanned
6.21.0- Compared with
6.20.1(0 signals introduced since)- Files
- 187 scanned, 110 skipped (binary, oversized, or unrecognised)
- Signals
- 0 critical · 0 warn · 40 info
- Scan time
- 24.3 s
- LLM review
- Reviewed by claude-haiku-5-5 (Anthropic): 28 of 29 warn and critical signals; 29 demoted to info.
- Disclude version
- 4.0.0
- Scanned (UTC)
- 2026-10-17 04:56
Signals
Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.
-
dismissed A GitHub URL path in a FAQ document was mis-flagged as a base64 blob.
Reasoning
The flagged string is a GitHub URL path inside a markdown sentence, not an encoded blob. The base64-like match is a false positive from the raw pass.
-
=dismissed A constant PDF password padding byte string used in encryption key derivation.Reasoning
The bytes are the standard 32-byte PDF encryption padding string (starting 28 BF 4E 5E 4E 75 8A 41...), a well-known constant defined by the PDF specification and used for RC4/AES key derivation. It is a legitimate constant, not a hidden payload.
-
=dismissed The PDF standard padding constant written as hex escapes.Reasoning
Same PDF standard padding constant as the sibling finding. The hex-escape match is a raw-pass artifact of a legitimate specification value.
-
b b )dismissed Second half of the PDF standard padding constant.Reasoning
Continuation line of the same PDF padding constant defined in the spec. No execution or decoding of the bytes occurs here.
-
):likely benign Checks whether a visitor keyword argument was supplied, using locals() lookup.Reasoning
locals() is read to check whether a visitor argument was passed in layout mode, a common pattern for detecting optional parameters. It reads local variables only and does not execute or fetch external code, though it is a slightly unusual idiom.
-
= = =likely benign Bounded zlib decompression of PDF stream data.Reasoning
zlib.decompressobj with max_length is the standard bounded FlateDecode decompression used when parsing PDF streams. The output limit is a deliberate safety control against decompression bombs.
-
inlikely benign Byte-value lookup tuple used when parsing inline image data.Reasoning
The bytes are a tuple of byte values used for membership tests when parsing inline image data, consistent with PDF/JPEG marker handling. It is a lookup table, not an executable payload.
-
b b ): =likely benign Continuation of a byte-value lookup table in inline image parsing.Reasoning
Continuation of the same byte-value lookup table in inline image parsing. The raw-pass hex match reflects the literal form, not a hidden payload.
-
October 14, 1998 Heres to the crazy ones. The misfits. The rebels. The troublemakers. The round pegs in the square holes. The ones who see things differently. Theyre not fond of rules. Anddismissed Typographic ligature in a sample text file.Reasoning
The word 'misfits' uses the Unicode fi ligature (U+FB01), which typography in the source text produces. It is a text resource, not code, so there is no identifier spoofing risk.
-
The round pegs in the square holes. The ones who see things differently. Theyre not fond of rules. And they have no respect for the status quo. You can quote them, disagree with them, glorify or vilify them.dismissed Typographic ligature in a sample text file.Reasoning
'differently' uses the ff ligature (U+FB00) from typeset text. This is a sample text resource with no code or identifier context.
-
Heres to the crazy ones. The misfits. The rebels. The troublemakers. The round pegs in the square holes. The ones who see things differently. Theyre not fond of rules. Anddismissed Typographic ligature in a layout test fixture.Reasoning
Same fi ligature in a test fixture for layout extraction. The mixed-script flag is a false positive on ordinary typeset text.
-
The round pegs in the square holes. The ones who see things differently. Theyre not fond of rules. And they have no respect for the status quo. You can quote them, disagree with them, glorify or vilify them.dismissed Typographic ligature in a layout test fixture.Reasoning
Same ff ligature in a layout test fixture. It is ordinary text, not an identifier.
-
info
warn→ info by reviewunicode-mixed-scriptresources/crazyones_layout_vertical_space_font_height_weight.txt:4:34Heres to the crazy ones. The misfits. The rebels. The troublemakers. The round pegs in the square holes.dismissed Typographic ligature in a text test fixture.Reasoning
Same fi ligature in a text fixture for font and layout tests. No code context and no spoofing.
-
info
warn→ info by reviewunicode-mixed-scriptresources/crazyones_layout_vertical_space_font_height_weight.txt:7:28The ones who see things differently. Theyre not fond of rules. And they have no respect for the status quo. You can quote them, disagree with them, glorify or vilify them.dismissed Typographic ligature in a text test fixture.Reasoning
Same ff ligature in a text test fixture. It is ordinary typeset text.
-
ffd8ffe000104a46494600010100000100010000ffdb0043000302020302020303030304030304050805050404050a070706080c0a0c0c0b0a0b0b0d0e12100d0e110e0b0b1016101113141515150c0f171816141812141514ffdb00430103040405040509050509140d0b0d1414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414ffc2likely benign Hex dump of JPEG image bytes stored as a long text line in a test resource.Reasoning
A single 82 KB line of hex-encoded JPEG header and quantization data in a resource text file. This is a test fixture for image handling, and long hex lines are a known artifact of dumping binary data, not obfuscation.
-
This is a sample document with two columns filled molestie vitae, placerat a, molestie nec, leo. Maece- with Lorem Ipsum text. nas lacinia. Nam ipsum ligula, eleifend at, accumsandismissed Lorem ipsum sample text containing a typographic fi ligature character.Reasoning
The mixed-script flag comes from the typographic ligature 'fi' (U+FB01) in ordinary lorem ipsum prose. Raw-pass unicode checks produce many false positives on such text, and this is plain document content.
-
= . = .. # Check the backwards-compatible substitution works when calling from pypdflikely benign Test helper reads its caller's frame name to verify a compatibility shim.Reasoning
inspect.currentframe is used in a test to check the caller name for a backwards-compatible font substitution path. This is a normal way to test call-site behavior in a PDF library and has no sign of malicious use.
-
= # no error assert in # actually the ϕ and φ seems to be crossed in latex -
assert ==likely benign Test fixture of binary CCITT-encoded image bytes written as escaped literals.Reasoning
A bytes literal of CCITT fax encoded image data used as the expected output and input for decoder tests. Binary fixture data in tests is expected.
-
=likely benign Repeated binary image test fixture in the same test function.Reasoning
Same test image fixture as the previous finding, flagged again on a different escape count. It is a benign binary test payload.
-
=likely benign Repeated binary image test fixture in the same test function.Reasoning
Same test image fixture as the previous finding, flagged again on a different escape count. It is a benign binary test payload.
-
b b )likely benign Continuation of a binary image test fixture literal.Reasoning
Continuation of the same binary image test fixture. The bytes are image structure data used for decoder validation.
-
) = b # noqa: E501 # Validation: Is our image data valid?likely benign JBIG2 globals stream bytes used as a decoder test input.Reasoning
A JBIG2 globals segment as a bytes literal with a noqa marker, used as decoder input in a test. This is standard test data for a PDF image codec.
-
=likely benign Inline PDF image test fixture containing JPEG bytes.Reasoning
An inline image containing a JPEG header with a text comment, built as an expected PDF content fragment. Benign test fixture for inline image handling.
-
=likely benign Raw pixel data constant used as a Flate image test fixture.Reasoning
A constant of flate-compressed-looking raw pixel data used for image decode tests. It is a plain binary test fixture with no execution or hiding behavior.
-
= =likely benign Test temporarily installs a trace function around a PDF object clone.Reasoning
sys.settrace is set around a clone call in a test, with the previous trace restored in a finally block. It looks like a test that checks recursion or call behavior during cloning. It is unusual, but it is scoped and cleaned up, which fits a test rather than a dropper.
-
likely benign Cleanup restoring the prior trace function after a clone test.
Reasoning
Restores the previous trace function and re-enables gc in a finally block, the cleanup half of the same test-scoped tracing. It is consistent with a benign test harness.
-
assert . ==likely benign Embedded PNG image bytes used as expected test data in an assertion.Reasoning
The bytes literal is a PNG file header (\x89PNG), IHDR chunk, IDAT and IEND markers: a genuine embedded test image fixture. High escape density is expected for binary test data in a test file asserting image data equality. No execution or hidden code.
-
, , ], ) -
, , ], ) -
# Non-hex digits, a marker at the end and a truncated escape are all kept as-is. , , , -
# Non-hex digits, a marker at the end and a truncated escape are all kept as-is. , , , -
, , , # A well-formed escape is still decoded (Adobe stores "my car" this way). -
, , , # A well-formed escape is still decoded (Adobe stores "my car" this way). -
, , # A well-formed escape is still decoded (Adobe stores "my car" this way). , -
, , # A well-formed escape is still decoded (Adobe stores "my car" this way). , -
# A well-formed escape is still decoded (Adobe stores "my car" this way). , ], ) -
=, =, =12, =False, -
= =likely benign Test helper temporarily installs a call-counting profiler around a function under test.Reasoning
Saving the previous profile hook and installing a call-counting profiler around a function call is a standard test utility for counting calls. The sys.setprofile use is a profiling tool, not malicious; it is restored in a finally block.
-
return ,likely benign Restores the previous profiler hook after the call-counting helper runs.Reasoning
This is the paired restore of the previous profile function in the finally block, matching the install at line 255. Legitimate profiler cleanup in a test helper.
Reproduce This Scan
Run disclude locally to verify. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.
&&