Ideally, it should not modify any global state (although that’s not strict).
Try avoiding cubic or greater complexity, logging, or excessive memory consumption.
random decisions not based on the input bytes) will make fuzzing inefficient.
It must be as deterministic as possible.
It may use threads but ideally all threads should be joined at the end of the function.
It must tolerate any kind of input (empty, huge, malformed, etc).
The fuzzing engine will execute the fuzz target many times with different inputs in the same process.
Some important things to remember about fuzz targets: Note that this fuzz target does not depend on libFuzzer in any wayĪnd so it is possible and even desirable to use it with other fuzzing engines fuzz_ extern "C" int LLVMFuzzerTestOneInput ( const uint8_t * Data, size_t Size )