This post is part of the Input Coverage > Code Coverage series.
Keep it boring.
process(data: &[u8])
.cargo-fuzz
).cargo-afl
).fuzz
and afl
.Skeleton:
your-crate/
src/lib.rs
tests/prop.rs
fuzz/fuzz_targets/target.rs
fuzz-afl/src/main.rs
Makefile
scripts/afl.sh
process
is the only place to exercise logic. All harnesses import it.
Short runs locally. Long runs in CI if you must. Store crash inputs as tests.