PyPI / gitpython / 3.2.1

gitpython 3.2.1

Source
https://github.com/gitpython-developers/GitPython
Tag scanned
3.2.1
Compared with
3.2.0 (0 signals introduced since)
Files
183 scanned, 114 skipped (binary, oversized, or unrecognised)
Signals
0 critical · 0 warn · 8 info
Scan time
7.0 s
LLM review
Reviewed by claude-haiku-5-5 (Anthropic): 6 of 6 warn and critical signals; 6 demoted to info.
Disclude version
4.1.0
Scanned (UTC)
2026-10-22 05:39

Signals

Ordered by severity, then signals introduced in this release. Hidden characters are shown as ⟨U+…⟩.

  1. info warn → info by review dynamic-execution build-release.sh:12:5

    command name is a variable (`$1`) not set in this file — the caller or environment decides what runs (ast pass, confidence 0.70)

    function release_with() {
        "$1" -m build --sdist --wheel
    }
    likely benign LLM, confidence 0.70 A bash helper that runs a caller-supplied command with python -m build for sdist and wheel packaging.
    Reasoning

    The command name comes from the first argument to a small release helper that then runs a standard build invocation. The caller chooses the interpreter, which is a wrapper pattern rather than hidden execution, though it is a mild injection surface in a release script.

  2. info warn → info by review encoding-base64 git/cmd.py:771:36

    base64-like blob (68 bytes, compression ratio 1.04) (raw pass, confidence 0.60)

        * :meth:`Git.execute` (on the ``shell`` parameter).
        * https://github.com/gitpython-developers/GitPython/commit/0d9390866f9ce42870d3116094cd49e0019a970a
        * https://learn.microsoft.com/en-us/windows/win32/procthread/process-creation-flags
    dismissed LLM, confidence 0.95 Docstring reference links in GitPython's command module, flagged as a base64-like blob.
    Reasoning

    The raw pass flagged a docstring listing URLs and a Windows documentation link. The text is not an encoded payload and the match is a false positive on prose.

  3. info warn → info by review decoder-decompress-payload gitdb/gitdb/fun.py:409:11

    file imports decoder module(s) zlib and calls `.decompress()` — embedded payload decompressed at runtime (ast pass, confidence 0.75)

        decompress_size = 8192      # is used in cgit as well
        hdr = decompressobj().decompress(m, decompress_size)
        type_name, size = hdr[:hdr.find(NULL_BYTE)].split(BYTE_SPACE)
    dismissed LLM, confidence 0.92 Decompresses the header of a git loose object to read its type and size.
    Reasoning

    zlib decompressobj is used to parse git object headers from loose object data, which is the expected way to read git's own on-disk format. The decompression is not an embedded or hidden payload being executed.

  4. info warn → info by review decoder-decompress-payload gitdb/gitdb/stream.py:73:21

    file imports decoder module(s) zlib and calls `.decompress()` — embedded payload decompressed at runtime (ast pass, confidence 0.75)

            self._m = m
            self._zip = zlib.decompressobj()
            self._buf = None                        # buffer of decompressed bytes
            self._buflen = 0                        # length of bytes in buffer
    dismissed LLM, confidence 0.92 Initializes a zlib decompressor in a streaming reader for git object data.
    Reasoning

    A stream wrapper initializes a zlib decompressor to read compressed git object data. This is standard library plumbing for a git object database, with no evidence of hidden execution.

  5. info warn → info by review dynamic-execution test/fixtures/env_case.py:18:7

    `subprocess.check_output` called with `shell=True` and a literal command (ast pass, confidence 0.70)

    # Step 4: Create the non-Python grandchild that accesses the variable case-sensitively.
    print(subprocess.check_output(["set", env_var_name], shell=True, text=True))
    likely benign LLM, confidence 0.85 A test fixture that runs the Windows set command through the shell to inspect an environment variable.
    Reasoning

    The shell=True call uses a literal command ('set') with a fixed argument list in a test fixture that checks case-sensitive environment variable access. Shell use here is for Windows environment inspection in a test, not an attacker-controlled payload.

  6. info warn → info by review encoding-base64 test/test_commit.py:512:1

    base64-like blob (724 bytes over 12 lines, compression ratio 0.80) (raw pass, confidence 0.60)

    
    iQIcBAABAgAGBQJRk8zMAAoJEG5mS6x6i9IjsTEP/0v2Wx/i7dqyKban6XMIhVdj
    uI0DycfXqnCCZmejidzeao+P+cuK/ZAA/b9fU4MtwkDm2USvnIOrB00W0isxsrED
    sdv6uJNa2ybGjxBolLrfQcWutxGXLZ1FGRhEvkPTLMHHvVriKoNFXcS7ewxP9MBf
    dismissed LLM, confidence 0.95 An armored PGP signature block used as test fixture data for commit verification.
    Reasoning

    The raw pass flagged a PGP signature block embedded as test data. Base64 armor of this kind in a commit-signing test is expected and carries no executable payload.

  7. info unicode-homoglyph test/test_exc.py:56:6

    identifier `ομορφο` contains homoglyph candidates: ο (03BF)→o, ο (03BF)→o, ρ (03C1)→p, ο (03BF)→o (in string/comment) (raw pass, confidence 0.35)

        "stream",
        "ομορφο stream",
    )
  8. info unicode-mixed-script test/test_exc.py:56:6

    identifier `ομορφο` mixes scripts: Greek + Latin (in string/comment) (raw pass, confidence 0.40)

        "stream",
        "ομορφο stream",
    )

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.

cargo install disclude --version 4.1.0
git clone https://github.com/gitpython-developers/GitPython GitPython && cd GitPython
git checkout 3.2.1
disclude scan --severity info --diff 3.2.0 .