PyPI / xxhash / 3.5.1

xxhash 3.5.1

Source
https://github.com/ifduyue/python-xxhash
Artifact scanned
xxhash-3.5.1.tar.gz (sdist · 1.1 MB · SHA-256 c6e0b21f0c90…)
Compared with
xxhash-3.5.0.tar.gz (12 signals introduced since)
Files
80 scanned, 34 skipped (binary, oversized, or unrecognised)
Signals
0 critical · 0 warn · 24 info
Scan time
14.1 s
LLM review
Reviewed by claude-haiku-5-5 (Anthropic): 15 of 15 warn and critical signals; 15 demoted to info.
Disclude version
4.3.0
Scanned (UTC)
2026-10-23 14:13

Signals

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

  1. info warn → info by review dynamic-execution deps/xxhash/.github/workflows/ci.yml:121:42 new in this release

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

            echo && type $CC && which $CC && $CC --version
            echo && type $CXX && which $CXX && $CXX --version
            echo && type make && make -v
    likely benign LLM, confidence 0.93 CI step echoing the configured C compiler version using the $CC variable.
    Reasoning

    Standard CI step printing compiler info; $CC/$CXX are set by the CI matrix environment. Variable command names in CI YAML are normal and benign here.

  2. info warn → info by review dynamic-execution deps/xxhash/.github/workflows/ci.yml:122:44 new in this release

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

            echo && type $CC && which $CC && $CC --version
            echo && type $CXX && which $CXX && $CXX --version
            echo && type make && make -v
            echo && cat /proc/cpuinfo || echo /proc/cpuinfo is not present
    likely benign LLM, confidence 0.93 CI step printing C++ compiler version via $CXX variable.
    Reasoning

    Same pattern as the preceding line: prints compiler and make versions in a CI job; $CXX comes from the workflow environment.

  3. info critical → info by review dynamic-execution deps/xxhash/.github/workflows/ci.yml:204:171 new in this release

    [embedded bash] command name is a variable or substitution — executed command determined at runtime (ast pass, confidence 0.90)

            # Run "make check" if /proc/cpuinfo has flags for avx512.
            grep -q "^flags.*\bavx512\b" /proc/cpuinfo && CPPFLAGS="-mavx512f -DXXH_VECTOR=XXH_AVX512" make clean check || (echo This test runner does not support AVX512. && $(exit 0))
    likely benign LLM, confidence 0.85 AVX512 test-selection step in CI using a conditional make and a no-op substitution fallback.
    Reasoning

    The $(exit 0) fallback is a no-op substitution used to keep the step succeeding after an echo; it is an unusual idiom but not malicious. The command is a grep on /proc/cpuinfo followed by a make invocation in a repository CI file.

  4. info warn → info by review dynamic-execution deps/xxhash/.github/workflows/ci.yml:436:17 new in this release

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

            echo && which $XCC
            echo && $XCC --version
            echo && $XCC -v  # Show built-in specs
            echo && which $XEMU
    likely benign LLM, confidence 0.93 CI step printing cross-compiler version via $XCC.
    Reasoning

    Cross-compiler check in CI printing version info; $XCC is defined by the job matrix. Benign.

  5. info warn → info by review dynamic-execution deps/xxhash/.github/workflows/ci.yml:437:17 new in this release

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

            echo && $XCC --version
            echo && $XCC -v  # Show built-in specs
            echo && which $XEMU
            echo && $XEMU --version
    likely benign LLM, confidence 0.93 CI step invoking $XCC --version and -v for toolchain info.
    Reasoning

    Same cross-compiler version check; variable command names are expected in matrix-driven CI.

  6. info warn → info by review dynamic-execution deps/xxhash/.github/workflows/ci.yml:439:17 new in this release

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

            echo && which $XEMU
            echo && $XEMU --version
    likely benign LLM, confidence 0.93 CI step checking the emulator version via $XEMU.
    Reasoning

    Emulator version check in CI; $XEMU is set by the matrix configuration. Benign.

  7. info warn → info by review obfuscated-command-name deps/xxhash/.github/workflows/ci.yml:544:9 new in this release

    [embedded bash] command name contains 4 backslash-escape sequences — hiding the true command (ast pass, confidence 0.85)

            .\cmake_unofficial\build\Release\xxhsum.exe -bi1
    likely benign LLM, confidence 0.90 Runs the locally built xxhsum.exe benchmark using a Windows path.
    Reasoning

    Backslashes are Windows path separators in a PowerShell/cmd invocation of the locally built xxhsum.exe benchmark binary. The flag counts as escape sequences only because of the YAML/shell parser; nothing is hidden.

  8. info warn → info by review obfuscated-command-name deps/xxhash/.github/workflows/ci.yml:559:9 new in this release

    [embedded bash] command name contains 4 backslash-escape sequences — hiding the true command (ast pass, confidence 0.85)

            .\cmake_unofficial\build-clang-cl\Release\xxhsum.exe -bi1
    likely benign LLM, confidence 0.90 Runs the clang-cl built xxhsum.exe benchmark with a Windows path.
    Reasoning

    Windows path separators to a build output binary in a CI benchmark step; not obfuscation.

  9. info warn → info by review obfuscated-command-name deps/xxhash/.github/workflows/ci.yml:575:9 new in this release

    [embedded bash] command name contains 4 backslash-escape sequences — hiding the true command (ast pass, confidence 0.85)

            .\cmake_unofficial\build-clang-cl-dispatch\Release\xxhsum.exe -V | grep autoVec
            .\cmake_unofficial\build-clang-cl-dispatch\Release\xxhsum.exe -bi1
    likely benign LLM, confidence 0.90 Runs the dispatch build xxhsum.exe with a Windows path and greps version output.
    Reasoning

    Windows path to a locally built binary in the CI workflow; backslashes are path separators.

  10. info warn → info by review obfuscated-command-name deps/xxhash/.github/workflows/ci.yml:576:9 new in this release

    [embedded bash] command name contains 4 backslash-escape sequences — hiding the true command (ast pass, confidence 0.85)

            .\cmake_unofficial\build-clang-cl-dispatch\Release\xxhsum.exe -V | grep autoVec
            .\cmake_unofficial\build-clang-cl-dispatch\Release\xxhsum.exe -bi1
    likely benign LLM, confidence 0.90 Runs the dispatch build xxhsum.exe benchmark with a Windows path.
    Reasoning

    Duplicate of the previous Windows benchmark invocation with the same benign path separators.

  11. info critical → info by review dynamic-execution deps/xxhash/.github/workflows/ci.yml:619:51 new in this release

    [embedded bash] command name is a variable or substitution — executed command determined at runtime (ast pass, confidence 0.90)

              # Expected output is "./xxhsum.exe: PE32+ executable (console) x86-64, for MS Windows"
              file ./xxhsum.exe | grep -q 'x86-64' || $(exit 1)
              ./xxhsum.exe --version
    likely benign LLM, confidence 0.85 CI check that the produced xxhsum.exe is an x86-64 PE, failing otherwise.
    Reasoning

    The $(exit 1) fallback is a deliberate failure to fail the step when the file type check does not match; it is a no-op-style idiom, not a payload. Benign CI verification of the Windows binary architecture.

  12. info critical → info by review dynamic-execution deps/xxhash/.github/workflows/ci.yml:629:50 new in this release

    [embedded bash] command name is a variable or substitution — executed command determined at runtime (ast pass, confidence 0.90)

              # Expected output is "./xxhsum.exe: PE32 executable (console) Intel 80386, for MS Windows"
              file ./xxhsum.exe | grep -q '80386' || $(exit 1)
              ./xxhsum.exe --version
    likely benign LLM, confidence 0.85 CI check that the produced xxhsum.exe is an Intel 80386 PE, failing otherwise.
    Reasoning

    Same pattern checking for a 80386 PE binary; the $(exit 1) forces a failure on mismatch. Benign CI validation.

  13. info identifier-low-length bench.sh:1:1

    40 of 70 non-conventional identifiers are single-character (57%) (token pass, confidence 0.50)

  14. info dynamic-execution bench.sh:8:1

    command name is a variable (`$PYTHON`) that this file sets only to plain text (ast pass, confidence 0.40)

    echo -n "    xxh32_intdigest     1000B: "
    $PYTHON -mtimeit -s 'from xxhash import xxh32_intdigest' \
                     -s 'import os'  \
                     -s 'import random' \
  15. info dynamic-execution bench.sh:16:1

    command name is a variable (`$PYTHON`) that this file sets only to plain text (ast pass, confidence 0.40)

    echo -n "    xxh32_intdigest    10000B: "
    $PYTHON -mtimeit -s 'from xxhash import xxh32_intdigest' \
                     -s 'import os'  \
                     -s 'import random' \
  16. info dynamic-execution bench.sh:25:1

    command name is a variable (`$PYTHON`) that this file sets only to plain text (ast pass, confidence 0.40)

    echo -n "    xxh64_intdigest     1000B: "
    $PYTHON -mtimeit -s 'from xxhash import xxh64_intdigest' \
                     -s 'import os'  \
                     -s 'import random' \
  17. info dynamic-execution bench.sh:33:1

    command name is a variable (`$PYTHON`) that this file sets only to plain text (ast pass, confidence 0.40)

    echo -n "    xxh64_intdigest    10000B: "
    $PYTHON -mtimeit -s 'from xxhash import xxh64_intdigest' \
                     -s 'import os'  \
                     -s 'import random' \
  18. info dynamic-execution bench.sh:42:1

    command name is a variable (`$PYTHON`) that this file sets only to plain text (ast pass, confidence 0.40)

    echo -n "    xxh3_64_intdigest   1000B: "
    $PYTHON -mtimeit -s 'from xxhash import xxh3_64_intdigest' \
                     -s 'import os'  \
                     -s 'import random' \
  19. info dynamic-execution bench.sh:50:1

    command name is a variable (`$PYTHON`) that this file sets only to plain text (ast pass, confidence 0.40)

    echo -n "    xxh3_64_intdigest  10000B: "
    $PYTHON -mtimeit -s 'from xxhash import xxh3_64_intdigest' \
                     -s 'import os'  \
                     -s 'import random' \
  20. info dynamic-execution bench.sh:59:1

    command name is a variable (`$PYTHON`) that this file sets only to plain text (ast pass, confidence 0.40)

    echo -n "    xxh3_128_intdigest  1000B: "
    $PYTHON -mtimeit -s 'from xxhash import xxh3_128_intdigest' \
                     -s 'import os'  \
                     -s 'import random' \
  21. info dynamic-execution bench.sh:67:1

    command name is a variable (`$PYTHON`) that this file sets only to plain text (ast pass, confidence 0.40)

    echo -n "    xxh3_128_intdigest 10000B: "
    $PYTHON -mtimeit -s 'from xxhash import xxh3_128_intdigest' \
                     -s 'import os'  \
                     -s 'import random' \
  22. info warn → info by review macro-keyword-override deps/xxhash/xxhash.h:3433:1

    `#define inline` rebinds the reserved C keyword `inline` (token pass, confidence 0.85)

       || (defined(__wasm_simd128__) && XXH_HAS_INCLUDE(<arm_neon.h>)) /* WASM SIMD128 via SIMDe */
    #    define inline __inline__  /* circumvent a clang bug */
    #    include <arm_neon.h>
    #    undef inline
    likely benign LLM, confidence 0.90 Temporary #define of inline around an arm_neon.h include to work around a clang bug.
    Reasoning

    This is a known, deliberate workaround in xxHash: it temporarily redefines inline to __inline__ around the arm_neon.h include to work around a clang bug, then undefines it. Well-documented library code, not malicious.

  23. info warn → info by review identifier-confusable-collision deps/xxhash/xxhash.h:4294:23

    two identifiers collapse to visual skeleton `bitf|ip|` (0/O/o and 1/l/I are confusable) (token pass, confidence 0.80)

        XXH_ASSERT(9 <= len && len <= 16);
        {   xxh_u64 const bitflip1 = (XXH_readLE64(secret+24) ^ XXH_readLE64(secret+32)) + seed;
            xxh_u64 const bitflip2 = (XXH_readLE64(secret+40) ^ XXH_readLE64(secret+48)) - seed;
            xxh_u64 const input_lo = XXH_readLE64(input)           ^ bitflip1;
    likely benign LLM, confidence 0.85 Vendored xxhash.h XXH3 code whose identifiers were flagged for visual confusability.
    Reasoning

    The snippet is ordinary XXH3 hashing code with normal identifiers (bitflip1, bitflip2, input_lo). The skeleton collision comes from the token pass normalizing 1/l/I and 0/O/o, so two names that differ only in confusable characters collapse together. Nothing in the snippet shows a hidden or deceptive identifier, and vendored xxhash is a known, legitimate source.

  24. info critical → info by review dynamic-execution setup.py:31:1

    `exec` at module scope (runs on import) on a non-literal expression (ast pass, confidence 0.80)

    version_dict = {}
    exec(d.joinpath("xxhash", "version.py").read_text(), {}, version_dict)
    version = version_dict["VERSION"]
    likely benign LLM, confidence 0.80 setup.py execs the package's own version.py to read its VERSION string at build time.
    Reasoning

    The exec runs at module scope on a non-literal string, which is the flagged pattern. However, the input is the package's own xxhash/version.py read from the project directory, with an empty globals-free namespace, and it extracts a VERSION key. This is the usual way upstream xxhash bindings read their version during install. It has no network access, decoding, or process spawning, so it is not a payload. The severity is high only because the pattern is generic.

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.

cargo install disclude --version 4.3.0
curl -fsSL -o xxhash-3.5.1.tar.gz https://files.pythonhosted.org/packages/25/9f/bae832bda6285b7b90b90529c5b261137e902095a7e0a40c17984fba6bce/xxhash-3.5.1.tar.gz
printf '%s  %s\n' c6e0b21f0c9000cd5001071bb7a98532d9b93e710dd10253d632c798ee99bebf xxhash-3.5.1.tar.gz | shasum -a 256 -c -
mkdir pkg && tar -xzf xxhash-3.5.1.tar.gz -C pkg --strip-components 1
disclude scan --untrusted --severity info pkg