Swift Fuzzing README
The Swift Thrift implementation uses LLVM's libFuzzer for fuzzing.
Fuzzer Structure
We currently have several fuzz targets that test different aspects of the Thrift implementation:
- FuzzParseBinary -- Tries to deserialize the code-generated FuzzTest struct from arbitrary input data using the binary protocol
- FuzzRoundtripBinary -- Tries to deserialize a FuzzTest struct and then tests roundtrip serialization/deserialization with the binary protocol
- FuzzParseCompact
- FuzzRoundtripCompact
- FuzzParseJSON
- FuzzRoundtripJSON
The fuzzers need a dummy main() to ensure that compilation in non-fuzzer modes doesn't regress.