To build the fuzz targets, run make check
in this directory. The build system uses LLVM's libFuzzer for fuzzing the C++ Thrift implementation.
These are standard libFuzzer targets, so you can run them using the standard libFuzzer interface. After building, you can run a fuzzer using:
./<fuzzer_name>
We currently have six fuzz targets:
The fuzzers use libFuzzer's built-in mutation engine to generate test cases. Each fuzzer implements the standard LLVMFuzzerTestOneInput
interface and uses common testing code from FuzzCommon.tcc
.
For more information about libFuzzer and its options, see the libFuzzer documentation.
You can also use the corpus generator from the Rust implementation to generate initial corpus files that can be used with these C++ fuzzers, since the wire formats are identical between implementations.