What problem does it solve?
It helps you uncover crashes and memory-safety bugs in C/C++ code by continuously generating inputs that maximize code coverage and reproduce failures with minimal effort.
Core Features & Use Cases
- Coverage-guided fuzzing for C/C++: Uses LLVM’s in-process libFuzzer workflow to drive exploration of your target code.
- Harness authoring & input modeling: Teaches how to implement
LLVMFuzzerTestOneInput, validate inputs, and use FuzzedDataProvider for structured extraction.
- Production-ready fuzzing setup: Covers compiling with
-fsanitize=fuzzer and optionally combining with ASan/UBSan, plus corpus/dictionary management to improve reach and speed.
- Use Case: When you suspect a parsing library (e.g., a custom file format parser) has edge-case bugs, you can build a harness, seed a corpus, and run long campaigns to reliably discover crashes and generate minimal repro inputs.
Quick Start
Use libfuzzer to fuzz your C/C++ harness and target by running a command like:
"clang++ -fsanitize=fuzzer,address -g -O2 -U_FORTIFY_SOURCE harness.cc target.cc -o fuzz && mkdir corpus && ./fuzz corpus/".