pypdfium2 5.15.0
- Source
- https://github.com/pypdfium2-team/pypdfium2
- Artifact scanned
pypdfium2-5.15.0.tar.gz- Compared with
pypdfium2-5.14.0.tar.gz(0 signals introduced since)- Files
- 153 scanned, 40 skipped (binary, oversized, or unrecognised)
- Signals
- 0 critical · 0 warn · 12 info
- Scan time
- 10.4 s
- LLM review
- Reviewed by claude-haiku-5-5 (Anthropic): 11 of 11 warn and critical signals; 11 demoted to info.
- Disclude version
- 4.3.0
- Scanned (UTC)
- 2026-11-06 15:27
Signals
Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.
-
# assuming cross-compilation dependencies are installedlikely benign Markdown build instructions showing a python invocation inside a blockquote.Reasoning
The flagged 'redirect' is a markdown blockquote marker ('> python ...') in a documentation example for building pdfium bindings. It is not a shell redirect and not a PATH hijack.
-
=likely benign Vendored PLY lexer dynamically imports its table module via exec.Reasoning
This is PLY-style lexer code importing a generated lextab module by name, from a vendored ctypesgen dependency. The module name comes from internal configuration, not untrusted input.
-
= =likely benign Vendored PLY helper uses sys._getframe to read caller namespaces.Reasoning
get_caller_module_dict is the standard PLY helper for reading the caller's globals. The sys.exit/exec co-occurrence is incidental and this is not anti-analysis behaviour.
-
= = =likely benign Vendored PLY code imports a package by computed name to find its file path.Reasoning
This is the same PLY pattern of exec('import %s' % pkgname) to locate a package's source directory. The name is derived from the package path the library itself computes.
-
= -
=likely benign Generated PLY parse table with an extremely long data line.Reasoning
parsetab.py is a generated LALR parser table; very long lines of integer lists are expected. The raw long-line signal has a high false-positive rate here.
-
=likely benign Generated PLY goto table with a long data line.Reasoning
Same generated parse table: a long dictionary literal of grammar goto entries, which is normal for this file type.
-
info
warn→ info by reviewdecoder-import-with-execdeps/ctypesgen/src/ctypesgen/parser/yacc.py:1568:25=likely benign Vendored PLY evaluates a literal token string from the grammar specification.Reasoning
PLY's grammar parser calls eval on a grammar-declared literal token string to check it is a single character. The input comes from the grammar author, and the pickle import is incidental.
-
=likely benign Duplicate flag of the PLY literal-token eval call.Reasoning
This is the same eval(s) call on a grammar literal flagged a second time by the dynamic-execution signal. It is the PLY literal-token check, not a payload.
-
=likely benign Vendored PLY parser imports its parsetab module via exec.Reasoning
PLY's yacc loads its parsetab module by name via exec('import %s' % module). This is the standard library-internal import pattern, not untrusted execution.
-
info
critical→ info by reviewframe-introspectiondeps/ctypesgen/src/ctypesgen/parser/yacc.py:2890:9= =likely benign Vendored PLY helper uses sys._getframe to read caller namespaces.Reasoning
This is the standard PLY get_caller_module_dict helper using sys._getframe to access the caller's globals. The anti-analysis label is a false match on incidental sys.exit use.
-
= = =likely benign Vendored PLY code imports a package by computed name to locate its output directory.Reasoning
Same PLY pattern: exec('import %s' % pkgname) to resolve a package's directory for output. The name is computed from the library's own package layout.
Reproduce This Scan
Run disclude locally to verify. These commands scan the published file; the "new in this release" marks come from comparing it with the previous release's file, which they don't repeat. Add --format sarif for SARIF output. Add --llm (with an API key in the environment) to include the LLM review.
|
&&