mirror of https://github.com/google/oss-fuzz.git
1.6 KiB
1.6 KiB
Example of OSS-Fuzz ideal integration.
This directory contains an example software project that has all the trais of ideal support for fuzzing.
- my_api.h and my_api.cpp implement the API we want to test/fuzz. The function
DoStuff()
inside my_api.cpp contains a bug. (Find it!) - do_stuff_unittest.cpp is a unit test for
DoStuff()
. Unit tests are not necessary for fuzzing, but are generally a good practice. - do_stuff_fuzzer.cpp is a fuzz target for
DoStuff()
. - standalone_fuzz_taget_runner.cpp is a simple standalone runnner for fuzz targets. You may use it to execute a fuzz target on given files w/o having to link in libFuzzer or other fuzzing engine.
- do_stuff_test_data corpus directory for do_stuff_fuzzer.cpp.
- Makefile is a build file:
- accepts external compiler flags via
$CC
,$CXX
,$CFLAGS
,$CXXFLAGS
- accepts external fuzzing engine via
$LIB_FUZZING_ENGINE
, by default uses standalone_fuzz_taget_runner.cpp - builds the fuzz target(s) and their corpus archive(s)
make check
executes do_stuff_fuzzer.cpp ondo_stuff_test_data/*
, thus ensures that the fuzz target is up to date and uses it as a regression test.
- accepts external compiler flags via
Example bug report filed automatically: https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1562