Files
rutster/fuzz
adlee-was-taken f765fc2b27 docs: LEARNING.md + fuzz/ placeholder + README dev-loop (spec §7, §6.3)
LEARNING.md indexes ten concept-to-file pointers (the spec floor was
five) — the newtype pattern, exhaustive enum match, sans-IO, trait
extension seams, thiserror + hot-path match-and-continue, Arc<Mutex>
vs Arc<RwLock>, DashMap, str0m's single-mutation invariant, graceful
shutdown, include_str!. fuzz/README.md pre-paves the layout (no
hostile-bytes surface in slice 1; harnesses land at step 5 per the
out-of-scope table). README's new dev-loop section documents the
libopus FFI prerequisite and the manual e2e steps.
2026-06-28 13:06:37 -04:00
..

fuzz/ — cargo-fuzz harness directory (placeholder)

Status: placeholder. Not yet a cargo-fuzz project — just the directory. Fuzz harnesses land at spearhead step 5 (PSTN trunk) alongside the SIP/SDP/RTP wire parsers (PORT_PLAN §10 mandates continuous fuzzing of every wire parser). Slice 1 has no hostile-bytes surface (the browser is trusted), so no harnesses here yet — the fuzz/ dir pre-paves the layout. Populating this directory with a real cargo-fuzz project (fuzz/Cargo.toml + fuzz/fuzz_targets/*.rs) happens at step 5.

If you're at step 5, replace this README with that structure:

  • fuzz/Cargo.toml — cargo-fuzz manifest.
  • fuzz/fuzz_targets/sip_parser.rs — fuzz the SIP parser.
  • fuzz/fuzz_targets/sdp_parser.rs — fuzz the SDP parser.
  • fuzz/fuzz_targets/rtp_packet.rs — fuzz the RTP packet parser.
  • CI job running a short fuzz burst on each PR (the cargo-fuzz integration lands in .github/workflows/ at that point).

The hot-path "drop + observe, don't crash" policy (spec §3.8) is what the future harnesses assert against: throw arbitrary bytes at the parser, assert it returns an error or drops silently — never panics.