summaryrefslogtreecommitdiffstats
path: root/src/fluent-bit/lib/librdkafka-2.1.0/tests/fuzzers/README.md
blob: b5a0333b19e55c897e20545396441dd802352cd0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Fuzzing
librdkafka supports fuzzing by way of Libfuzzer and OSS-Fuzz. This is ongoing work.

## Launching the fuzzers
The easiest way to launch the fuzzers are to go through OSS-Fuzz. The only prerequisite to this is having Docker installed.

With Docker installed, the following commands will build and run the fuzzers in this directory:

```
git clone https://github.com/google/oss-fuzz
cd oss-fuzz
python3 infra/helper.py build_image librdkafka
python3 infra/helper.py build_fuzzers librdkafka
python3 infra/helper.py run_fuzzer librdkafka FUZZ_NAME
```
where FUZZ_NAME references the name of the fuzzer. Currently the only fuzzer we have is fuzz_regex

Notice that the OSS-Fuzz `helper.py` script above will create a Docker image in which the code of librdkafka will be built. As such, depending on how you installed Docker, you may be asked to have root access (i.e. run with `sudo`).


## Running a single reproducer

Download the reproducer file from the OSS-Fuzz issue tracker, then build
the failed test case by running `make` in this directory, and then
run the test case and pass it the reproducer files, e.g:

    $ make
    $ ./fuzz_regex ~/Downloads/clusterfuzz-testcase-...

**Note:** Some test cases, such as fuzz_regex, requires specific librdkafka
          build configuration. See the test case source for details.