decorator 5.3.1
- Source
- https://github.com/micheles/decorator
- Tag scanned
5.3.1- Compared with
5.3.0(0 signals introduced since)- Files
- 13 scanned, 4 skipped (binary, oversized, or unrecognised)
- Signals
- 0 critical · 0 warn · 3 info
- Scan time
- 4.2 s
- LLM review
- Reviewed by claude-haiku-5-5 (Anthropic): 3 of 3 warn and critical signals; 3 demoted to info.
- Disclude version
- 4.0.0
- Scanned (UTC)
- 2026-10-14 18:55
Signals
Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.
-
= # for IronPython and similar implementations =likely benign Call-stack introspection via sys._getframe to determine the caller's module name inside a decorator-utility library.Reasoning
This is the well-known `decorator` library. sys._getframe(3) is used to find the calling module's name so decorated functions keep the correct __module__. The AttributeError fallback is for IronPython and similar runtimes. The anti-analysis label comes only from the file also containing sys.exit/exec/eval, which a library that generates functions naturally does. Nothing here hides behaviour or reaches outside the process.
-
=likely benign Runtime compilation of a generated wrapper function whose source is built from the decorated function's signature.Reasoning
compile(src, filename, 'single') builds the body of a wrapper function whose signature is generated at runtime to match the decorated function. The source is assembled from the function's own argument names, not from attacker-controlled input, and the code sits inside a try/except that reports errors. This is the documented way the decorator library preserves signatures.
-
=likely benign exec of the generated wrapper code in a local namespace, paired with the compile call on the previous line.Reasoning
exec runs the compiled wrapper in a dedicated evaldict namespace. This is the same generated-wrapper mechanism as the compile call on line 173. The payload is built from signature metadata of local functions, and there is no network access, decoding, or shell call, so it does not match a dropper pattern.
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.
&&