Following up from the previous post, still organizing from gist.
libfuzzer is a project under llvm
LibFuzzer is in-process, coverage-guided, evolutionary fuzzing engine. LibFuzzer is linked with the library under test, and feeds fuzzed inputs to the library via a specific fuzzing entrypoint (aka “target function”); the fuzzer then tracks which areas of the code are reached, and generates mutations on the corpus of input data in order to maximize the code coverage. The code coverage information for libFuzzer is provided by LLVM’s SanitizerCoverage instrumentation.
Let’s get started
Chromium fuzzing tutorial
ubuntu16.04:
|


On an 8-core 8GB machine, the initial builds are basically one per second, looks like it might take 9 hours to finish. If we’re lucky.

Build complete, size grew to 49G

Building libfuzzer
$ gn gen out/libfuzzer '--args=use_libfuzzer=true is_asan=true is_ubsan_security=true is_debug=false enable_nacl=false' --check |

$ ./out/libfuzzer/v8_json_parser_fuzzer ~/chromium/testcases/json_parser_corpus/ --dict=json.dict -jobs=6 -workers=6 |

ToDo
- gn usage
- ninja usage