Fuzz Testing¶
Status: retired, replacement tracked. The C++ libFuzzer harness that fuzzed the C++ IIIF URI parser (
//fuzz/handlers:iiif_handler_uri_parser_fuzz, its seed corpus, and thefuzz/handlers/package) has been removed. IIIF request parsing now lives in the Rust shell (//src/iiifparser/rust:iiif_parser(parse_request)), so the parser worth fuzzing is Rust code. A Rust fuzz harness againstparse_request(e.g.cargo-fuzz/libfuzzer-sysunderrules_rust) is a tracked follow-up.
Until that harness lands there is no working fuzz target. The
just bazel-build-fuzz / just bazel-run-fuzz recipes, the .github/workflows/fuzz.yml
workflow, and the //tools/fuzz platform definitions still reference the removed
C++ target and do not build; treat them as stale until the Rust harness replaces
them.
What a replacement harness needs to cover¶
The retired harness fed random and mutated bytes to the parser and looked for
crashes, memory-safety issues, and undefined behavior. The Rust replacement
should target the same surface — parse_request — with a seed corpus of
known-good IIIF URIs (basic image request, info.json, knora.json, region /
size / rotation / quality / format permutations) so the fuzzer starts from broad
coverage rather than rediscovering the URI grammar from scratch.