oss-fuzz/docs/building_running_fuzzers.md

1.3 KiB

Building and Running Fuzzers

This page documents building and running fuzzers as part of OSS target source tree. See External Fuzzer process for oss-fuzz fuzzers.

Prerequisites

Install Docker. The toolchain setup necessary to build coverage-guided fuzzers is complicated. Docker is used to simplify distribution of the toolchain and to produce repeatable results for distributed execution.

Building Fuzzers

Building fuzzer is a two-step process:

  1. Building a container ready to compile fuzzers:
     # in target directory
     docker build -t ossfuzz/$target_name .
     
  2. Build fuzzers:
     # in target directory
    

docker run -ti -v $PWD:/src/$target_name -v /tmp/out:/out ossfuzz/$target_name

/tmp/out will contain fuzzers.

Running Fuzzers

Fuzzers are statically linked executables and could be executed normally in Unbuntu-like environment. When Ubuntu environment is not available (or a restricted environment is desirable), the fuzzer can easly be run inside docker container:

docker run -ti -v /tmp/out:/out -t ossfuzz/libfuzzer-runner /out/$fuzzer --runs=100