This commit is contained in:
Andrea Fioraldi 2021-02-27 15:12:19 +01:00
parent fd83c10c1e
commit 0f40ac05d4
2 changed files with 4 additions and 4 deletions

View File

@ -10,7 +10,7 @@ It is released as Free and Open Source Software under the GNU Lesser General Pub
## Example usages ## Example usages
We collect example fuzzers in `./fuzzers`. They can be build using `cargo build --example [fuzzer_name]` We collect example fuzzers in `./fuzzers`. They can be build using `cargo build --example [fuzzer_name] --release`
The best-tested fuzzer is `./fuzzers/libfuzzer_libpng`, a clone of libfuzzer using libafl for a libpng harness. The best-tested fuzzer is `./fuzzers/libfuzzer_libpng`, a clone of libfuzzer using libafl for a libpng harness.
See its readme [here](./fuzzers/libfuzzer_libpng/README.md). See its readme [here](./fuzzers/libfuzzer_libpng/README.md).

View File

@ -8,7 +8,7 @@ It has been tested on Linux.
To build this example, run `cargo build --example libfuzzer_libpng --release`. To build this example, run `cargo build --example libfuzzer_libpng --release`.
This will call (the build.rs)[./builld.rs], which in turn downloads a libpng archive from the web. This will call (the build.rs)[./builld.rs], which in turn downloads a libpng archive from the web.
Then, it will link (the fuzzer)[./src/fuzzer.rs] against (the c++ harness)[./harness.cc] and the instrumented `libpng`. Then, it will link (the fuzzer)[./src/fuzzer.rs] against (the C++ harness)[./harness.cc] and the instrumented `libpng`.
Afterwards, the fuzzer will be ready to run, from `../../target/examples/libfuzzer_libpng`. Afterwards, the fuzzer will be ready to run, from `../../target/examples/libfuzzer_libpng`.
## Run ## Run
@ -20,6 +20,6 @@ As this example uses in-process fuzzing, we added a Restarting Event Manager (`s
This means each client will start itself again to listen for crashes and timeouts. This means each client will start itself again to listen for crashes and timeouts.
By restarting the actual fuzzer, it can recover from these exit conditions. By restarting the actual fuzzer, it can recover from these exit conditions.
In any real-world scenario, you should use `taskset` to pin each client to an empty cpu core, the lib does not pick an empty core automatically (yet). In any real-world scenario, you should use `taskset` to pin each client to an empty CPU core, the lib does not pick an empty core automatically (yet).
For convenience, you may just run `./test.sh` in this folder to test it. For convenience, you may just run `./test.sh` in this folder to test it.