Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Corpus management

Checked-in seeds

Legacy and direct-fuzzer seeds are binary files under corpora/<target>/. Structured seeds are authored as textproto under scenarios/curl_fuzzer_proto/<lane>/; their generated binary form belongs in the build tree and must not be checked in.

When the aggregate build runs, CMake writes a manifest for each generated structured corpus. Packaging and coverage use that manifest so removed scenarios cannot survive as stale build artifacts.

Public OSS-Fuzz corpora

Download the current public corpus for every supported target with:

./scripts/download_public_corpus.sh

The script writes to ossfuzz_corpus/<target>/, skips targets whose public archive is not available yet, and leaves an existing non-empty directory alone. Force a refresh with:

./scripts/download_public_corpus.sh -f

OSS-Fuzz prefixes target names that do not already begin with curl_. The download script owns this mapping; documentation should not maintain a parallel list of storage URLs.

Downloaded corpora are ignored by Git. Coverage automatically includes them when present. Some fixed structured lanes also replay compatible historical curl_fuzzer_proto inputs, with their target policy normalizing the scenario before execution.

Seed archives

scripts/create_zip.sh is used by the OSS-Fuzz build to package seed corpora. For structured targets it reads the generated manifest; for legacy and direct targets it archives the corresponding checked-in corpus directory. Per-target runtime settings and dictionaries live under ossconfig/.