QoL improvements for the MojoLPM fuzzer.

Adds mojo/tools/fuzzers/mojom.gni which has a template rule that wraps
most of the build-file mechanics necessary to build fuzzer targets 
using MojoLPM, and adds pipe date size limits to the MojoLPM data pipe
implementations to prevent fuzzers from OOMing so easily. 

In order to make the mojolpm_fuzzer_target work, it needs to fix 
handling for testonly in a couple of places:
  - adding testonly propagation to protoc_convert.
  - adding testonly to seed_corpus copy rule.

Bug: 1076336
Change-Id: Ib6b2efbe533151e28c3ef26593ac0dc322725770
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2172079
Commit-Queue: Mark Brand <markbrand@google.com>
Reviewed-by: Nico Weber <thakis@chromium.org>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Ken Rockot <rockot@google.com>
Reviewed-by: Jonathan Metzman <metzman@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#773121}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: f9603fa366aa61c8aa17205b8ee20915e38cd277
1 file changed
tree: 97f25932f61d02b949574befb6137dd1b7c67cb7
  1. AFL_integration.md
  2. BUILD.gn
  3. OWNERS
  4. README.md
  5. archive_corpus.py
  6. dictionary_generator.py
  7. efficient_fuzzing.md
  8. fuzzer_test.gni
  9. fuzzers/
  10. gen_fuzzer_config.py
  11. gen_fuzzer_owners.py
  12. getting_started.md
  13. libFuzzer_integration.md
  14. libfuzzer_exports.h
  15. libprotobuf-mutator.md
  16. proto/
  17. reference.md
  18. reproducing.md
  19. tests/
  20. unittest_main.cc
  21. zip_sources.py
README.md

Fuzz testing in Chromium

go/chrome-fuzzing

Fuzzing is a testing technique that feeds auto-generated inputs to a piece of target code in an attempt to crash the code. It's one of the most effective methods we have for finding security and stability issues (see go/fuzzing-success). You can learn more about the benefits of fuzzing at go/why-fuzz.

This documentation covers the in-process guided fuzzing approach employed by different fuzzing engines, such as libFuzzer or AFL. To learn more about out-of-process fuzzers, please refer to the Blackbox fuzzing page in the ClusterFuzz documentation.

Getting Started

In Chromium, you can easily create and submit fuzz targets. The targets are automatically discovered by buildbots, built with different fuzzing engines, then uploaded to the distributed ClusterFuzz fuzzing system to run at scale.

Create your first fuzz target and submit it by stepping through our Getting Started Guide.

Advanced Topics

Further Reading

Trophies

Other Links