bind9/fuzz/FUZZING.md
Ondřej Surý 2bf7921c7e Update the copyright information in all files in the repository
This commit converts the license handling to adhere to the REUSE
specification.  It specifically:

1. Adds used licnses to LICENSES/ directory

2. Add "isc" template for adding the copyright boilerplate

3. Changes all source files to include copyright and SPDX license
   header, this includes all the C sources, documentation, zone files,
   configuration files.  There are notes in the doc/dev/copyrights file
   on how to add correct headers to the new files.

4. Handle the rest that can't be modified via .reuse/dep5 file.  The
   binary (or otherwise unmodifiable) files could have license places
   next to them in <foo>.license file, but this would lead to cluttered
   repository and most of the files handled in the .reuse/dep5 file are
   system test files.

(cherry picked from commit 58bd26b6cf)
2022-01-11 12:22:09 +01:00

1.4 KiB

= Fuzzing

The tests in this directory can be operated in three modes:

  • non-fuzzing - the test just runs over all input located in <test_name>.in/ directory by compiling with mock main.c that walks through the directory and runs LLVMFuzzerTestOneInput() over the input files
  • AFL - ./configure --with-fuzzing=afl will either feed the stdin to LLVMFuzzerTestOneInput() or run the __AFL_LOOP(10000) if compiled with afl-clang-fast
  • LibFuzzer - ./configure --with-fuzzing=libfuzzer will disable main.c completely and it uses the standard LibFuzzer mechanims to feed LLVMFuzzerTestOneInput with the fuzzer

== Test Cases

Each test case should be called descriptively and the executable target must link testcase.o and main.o and the test_case.c must have a function LLVMFuzzerTestOneInput(const uint8_t* data, size_t size).

== Adding more fuzzers

To add a different fuzzer, main.c must be modified to include main() function for a specific fuzzer (or no function as is case with LibFuzzer).