环境配置
$ sudo apt update
$ sudo apt-get install clang-6.0
$ update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-6.0 1000
$ update-alternatives --install /usr/bin/clang clang /usr/bin/clang-6.0 1000
$ update-alternatives --config clang
$ update-alternatives --config clang++
$ sudo update-alternatives --install /usr/bin/cc cc /usr/bin/clang 100 $ sudo update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++ 100
$ sudo apt-get install wget
$ sudo apt-get install make
$ sudo apt-get install git
$ git clone https://github.com/vincenthz/libjson
# Install git and get this tutorial
sudo apt-get --yes install git
git clone https://github.com/google/fuzzing.git fuzzing
# Get fuzzer-test-suite
git clone https://github.com/google/fuzzer-test-suite.git FTS
./fuzzing/tutorial/libFuzzer/install-deps.sh # Get deps
./fuzzing/tutorial/libFuzzer/install-clang.sh # Get fresh clang binaries
fuzz libjson
修改makefile
AR = ar
CC = clang
CFLAGS ?= -g -fsanitize=address -fsanitize-coverage=trace-pc-guard -Wall -Os -fPIC
LDFLAGS = -L.
SHLIB_CFLAGS = -shared
make clean && make
编译测试驱动
clang -g -fsanitize=address,fuzzer target.c -c
链接将库,驱动和libFuzzer 的目标文件
clang++ -g -fsanitize=address,fuzzer json.o target.o -o out
执行
./out