about summary refs log tree commit diff
path: root/custom_mutators/libfuzzer/README.md
blob: cb4773b743573f9dfe39adca5f0628becdac70bb (plain) (blame)
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
# custum mutator: libfuzzer LLVMFuzzerMutate()

This uses the libfuzzer LLVMFuzzerMutate() function in llvm 12.

just type `make` to build

```AFL_CUSTOM_MUTATOR_LIBRARY=custom_mutators/libfuzzer/libfuzzer-mutator.so afl-fuzz ...```

Note that this is currently a simple implementation and it is missing two features:
  * Splicing ("Crossover")
  * Dictionary support

To update the source, all that is needed is that FuzzerDriver.cpp has to receive

```
#include "libfuzzer.inc"
```

before the closing namespace bracket.

It is also libfuzzer.inc where the configuration of the libfuzzer mutations
are done.

> Original repository: https://github.com/llvm/llvm-project
> Path: compiler-rt/lib/fuzzer/*.{h|cpp}
> Source commit: df3e903655e2499968fc7af64fb5fa52b2ee79bb