Skip to content

Fuzz target + full pre-publish gate hardening - #1

Merged
h4x0r merged 3 commits into
mainfrom
feat/fuzz-and-pre-publish-gate
Jul 12, 2026
Merged

Fuzz target + full pre-publish gate hardening#1
h4x0r merged 3 commits into
mainfrom
feat/fuzz-and-pre-publish-gate

Conversation

@h4x0r

@h4x0r h4x0r commented Jul 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Hardens xpress-huffman (MS-XCA §2.2.4 / LZXPRESS_HUFFMAN decompressor, consumed by prefetch-forensic and memf-*) to the full SecurityRonin pre-publish gate. Priority was the missing fuzz target; the rest brings CI/config up to the leveldb-forensic standard. Not for publish — draft, no tag.

Priority 1 — fuzz target (the real gap)

  • fuzz/fuzz_targets/decompress.rs feeds arbitrary bytes to the public decompress fn, asserting hostile input yields Ok or a typed Err (TruncatedTable / BadMatchOffset), never a panic/abort/OOM. Output-size hint capped at 1 MiB so the caller-controlled Vec::with_capacity is never the thing under test.
  • fuzz.yml runs a bounded campaign weekly + on demand (nightly, cargo +nightly fuzz run); ci.yml fuzz-check job compiles it on every push.
  • Local smoke run: ~18k execs, 0 crashes. The bounds-checked decoder is panic-free as designed — fuzzing found no defect, so no bounds-fix was needed.

Priority 2 — pre-publish gate

  • ci.yml restructured into separate jobs: fmt · clippy -D warnings (both feature sets) · test on ubuntu/macos/windows · low-MSRV 1.85 build · cargo-deny · gitleaks · 100%-function coverage · nightly fuzz-check · docs.
  • Added: renovate.json (rangeStrategy bump + lockFileMaintenance + Actions digest pinning), .pre-commit-config.yaml (fmt/clippy/gitleaks parity with CI).
  • Cleaned stale vmdk copy-paste: clippy.toml doc-idents, .gitleaks.toml allowlist, deny.toml (added [graph] + LLVM-exception, dropped vmdk bits). .gitignore gains OS/editor cruft + fuzz output. rustfmt.toml dropped the unstable imports_granularity line.
  • Verified already-correct: LICENSE (verbatim Apache-2.0), README (SecurityRonin standard, no Stars badge), docs/{privacy,terms,validation}.md, docs.yml (SHA-pinned Pages deploy), [lints] (forbid(unsafe) + deny unwrap/expect).

Local gate results (all PASS)

cargo fmt --check · cargo clippy --all-targets --all-features -- -D warnings · cargo test --all-features (13 pass) · cargo deny check (all ok) · cargo llvm-cov --fail-under-functions 100 (26/26 functions) · cargo +nightly fuzz check · fuzz smoke run (0 crashes).

Version bumped 0.1.0 → 0.1.1.

🤖 Generated with Claude Code

h4x0r and others added 3 commits July 12, 2026 13:37
Adds a libFuzzer target feeding arbitrary bytes to the public `decompress`
entry point (the MS-XCA §2.2.4 decompressor consumed by prefetch-forensic and
memf-*), asserting the invariant that hostile input yields Ok or a typed Err,
never a panic/abort/OOM. The output-size hint is capped at 1 MiB so the caller-
controlled Vec::with_capacity is never the thing under test.

fuzz.yml runs a bounded campaign weekly + on demand; ci.yml's fuzz-check job
compiles it on every push. A local ~18k-exec smoke run (seeded with the real
prefetch vectors) produced no crash — the bounds-checked decoder is panic-free.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Restructures ci.yml into separate jobs (fmt · clippy -D warnings · test on the
ubuntu/macos/windows matrix · low-MSRV 1.85 build · cargo-deny · gitleaks ·
100%-function coverage · nightly fuzz-check · docs), matching the fleet gate.
Adds renovate.json (rangeStrategy bump + lockFileMaintenance + Actions digest
pinning) and .pre-commit-config.yaml (fmt/clippy/gitleaks parity with CI).

Cleans stale copy-paste from the vmdk crate: clippy.toml doc-idents,
.gitleaks.toml allowlist, deny.toml (adds [graph] + LLVM-exception, drops the
vmdk-specific bits). .gitignore gains OS/editor cruft + fuzz build output.
rustfmt.toml drops the unstable imports_granularity line (ignored on the pinned
stable, only emitted a warning). Bumps 0.1.0 -> 0.1.1 (gate + fuzz hardening).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
v2.0.4's bundled cargo-deny fails to load the RustSec advisory DB when an
advisory (RUSTSEC-2026-0124) carries a CVSS 4.0 vector. v2.0.20 parses it.
@h4x0r
h4x0r marked this pull request as ready for review July 12, 2026 10:14
@h4x0r
h4x0r merged commit 097c95b into main Jul 12, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant