| OLD | NEW |
| 1 # libFuzzer and ClusterFuzz Integration | 1 # libFuzzer and ClusterFuzz Integration |
| 2 | 2 |
| 3 *** note | 3 *** note |
| 4 Most links on this page are private. | 4 Most links on this page are private. |
| 5 *** | 5 *** |
| 6 | 6 |
| 7 ClusterFuzz is a distributed fuzzing infrastructure | 7 ClusterFuzz is a distributed fuzzing infrastructure |
| 8 ([go/clusterfuzz](https://goto.google.com/clusterfuzz)) that automatically | 8 ([go/clusterfuzz](https://goto.google.com/clusterfuzz)) that automatically |
| 9 executes libFuzzer tests on scale. | 9 executes libFuzzer tests on scale. |
| 10 | 10 |
| 11 ## Status Links | 11 ## Status Links |
| 12 | 12 |
| 13 * [Buildbot] - status of all libFuzzer builds | 13 * [Buildbot] - status of all libFuzzer builds. |
| 14 * [ClusterFuzz Fuzzer Status] - fuzzing metrics, links to crashes and coverage | 14 * [ClusterFuzz Fuzzer Status] - fuzzing metrics, links to crashes and coverage |
| 15 reports. | 15 reports. |
| 16 * [Corpus GCS Bucket] - current corpus for each fuzzer. Can be used to upload | 16 * [Corpus GCS Bucket] - current corpus for each fuzzer. Can be used to upload |
| 17 bootstrapped corpus. | 17 bootstrapped corpus. |
| 18 | 18 |
| 19 ## Integration Details | 19 ## Integration Details |
| 20 | 20 |
| 21 The integration between libFuzzer and ClusterFuzz consists of: | 21 The integration between libFuzzer and ClusterFuzz consists of: |
| 22 | 22 |
| 23 * Build rules definition in [fuzzer_test.gni] | 23 * Build rules definition in [fuzzer_test.gni]. |
| 24 * [Buildbot] that automatically discovers fuzzers using `gn refs` facility, | 24 * [Buildbot] that automatically discovers fuzzers using `gn refs` facility, |
| 25 builds fuzzers with multiple sanitizers and uploads binaries to a special | 25 builds fuzzers with multiple sanitizers and uploads binaries to a special |
| 26 GCS bucket. Build bot recipe is defined in [chromium_libfuzzer.py]. | 26 GCS bucket. Build bot recipe is defined in [chromium_libfuzzer.py]. |
| 27 * ClusterFuzz downloads new binaries once a day and runs fuzzers continuously. | 27 * ClusterFuzz downloads new binaries once a day and runs fuzzers continuously. |
| 28 * Fuzzing corpus is maintained for each fuzzer in [Corpus GCS Bucket]. Once a da
y | 28 * Fuzzing corpus is maintained for each fuzzer in [Corpus GCS Bucket]. Once a da
y |
| 29 corpus is minimized to reduce number of duplicates and/or reduce effect of | 29 corpus is minimized to reduce number of duplicates and/or reduce effect of |
| 30 parasitic coverage. | 30 parasitic coverage. |
| 31 * [ClusterFuzz Fuzzer Status] displays fuzzer runtime | 31 * [ClusterFuzz Fuzzer Status] displays fuzzer runtime |
| 32 metrics as well as provides links to crashes and coverage reports. The informati
on | 32 metrics as well as provides links to crashes and coverage reports. The informati
on |
| 33 is collected once a day. | 33 is collected every 30 minutes. |
| 34 | 34 |
| 35 | 35 |
| 36 [Buildbot]: https://goto.google.com/libfuzzer-clusterfuzz-buildbot | 36 [Buildbot]: https://goto.google.com/libfuzzer-clusterfuzz-buildbot |
| 37 [fuzzer_test.gni]: https://code.google.com/p/chromium/codesearch#chromium/src/te
sting/libfuzzer/fuzzer_test.gni | 37 [fuzzer_test.gni]: https://code.google.com/p/chromium/codesearch#chromium/src/te
sting/libfuzzer/fuzzer_test.gni |
| 38 [chromium_libfuzzer.py]: https://code.google.com/p/chromium/codesearch#chromium/
build/scripts/slave/recipes/chromium_libfuzzer.py | 38 [chromium_libfuzzer.py]: https://code.google.com/p/chromium/codesearch#chromium/
build/scripts/slave/recipes/chromium_libfuzzer.py |
| 39 [ClusterFuzz Fuzzer Status]: https://goto.google.com/libfuzzer-clusterfuzz-statu
s | 39 [ClusterFuzz Fuzzer Status]: https://goto.google.com/libfuzzer-clusterfuzz-statu
s |
| 40 [Corpus GCS Bucket]: https://goto.google.com/libfuzzer-clusterfuzz-corpus | 40 [Corpus GCS Bucket]: https://goto.google.com/libfuzzer-clusterfuzz-corpus |
| OLD | NEW |