Manual Fuzz Target Creation

Fuzz Targets can be created manually with CI Fuzz. To do so, click on the Plus button in the left Fuzz Targets sidebar:

Create a Fuzz Target manually

Click on API Fuzz Test to create a Fuzz Test which targets a function call.

API Fuzz Test

Create the fuzz target by filling out the “New API Fuzz Test” Form.

Fuzz Target Creator

Target Name is a name that you can chose to identify the fuzz test.

Select the Programming Language you want to fuzz. If you want to fuzz a C Library you can also create a C++ Fuzz target in order to make use of C++ features in the fuzz test itself. Just remember to surround the C function calls with extern "C" (see the official Documentation on how to mix C and C++)

Run arguments will be passed to the fuzzer during runtime. Most of the time these can stay empty

The Build Flags are important for the compilation of the fuzz target. With “Fuzz This Function” these would be filled out automatically for you. With Manual Fuzz Target Creation you have to fill in the include paths -I, library paths -L and libraries -l needed to build the fuzz target. Enter one Build flag per line, like this example for cppcms:

-Ibuild
-Ibooster
-Isrc
-Iprivate
-Icppcms_boost
-Ibuild/booster
-I.
-Lbuild
-lpthread
-lpcre
-licuuc
-licui18n
-licudata
-ldl
-lcppcms

After saving the fuzz target configuration, click on the fuzz test you created in the Fuzz Tests sidebar.

Fuzz Json

Then click on “Open Source Code” to edit the fuzz target. Open Source Code