From 3525a0834b7818bdf71dd502ab616953dc5a7b91 Mon Sep 17 00:00:00 2001 From: Nikos Mavrogiannopoulos Date: Wed, 21 Feb 2018 11:21:36 +0100 Subject: fuzz: enable fuzzer target in afl examples and add missing script [ci skip] Signed-off-by: Nikos Mavrogiannopoulos --- fuzz/README.md | 4 ++-- fuzz/run-afl.sh | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) create mode 100755 fuzz/run-afl.sh diff --git a/fuzz/README.md b/fuzz/README.md index 36e4e504e9..1fc737ed58 100644 --- a/fuzz/README.md +++ b/fuzz/README.md @@ -32,7 +32,7 @@ UBSAN_OPTIONS=print_stacktrace=1 ASAN_SYMBOLIZER_PATH=/usr/lib/llvm-5.0/bin/llvm Use the following commands on top dir: ``` -$ CC=afl-clang-fast ./configure --disable-doc +$ CC=afl-clang-fast ./configure --disable-doc --enable-fuzzer-target --disable-guile $ make -j$(nproc) clean all $ cd fuzz $ ./run-afl.sh gnutls_base64_decoder_fuzzer @@ -43,7 +43,7 @@ $ ./run-afl.sh gnutls_base64_decoder_fuzzer Use the following commands on top dir: ``` -$ CC=afl-gcc ./configure --disable-doc +$ CC=afl-gcc ./configure --disable-doc --enable-fuzzer-target --disable-guile $ make -j$(nproc) clean all $ cd fuzz $ ./run-afl.sh gnutls_base64_decoder_fuzzer diff --git a/fuzz/run-afl.sh b/fuzz/run-afl.sh new file mode 100755 index 0000000000..9daaf601bf --- /dev/null +++ b/fuzz/run-afl.sh @@ -0,0 +1,49 @@ +#!/bin/sh +# Copyright (C) 2017 Red Hat, Inc. +# +# This file is part of GnuTLS. +# +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This file is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with this program. If not, see + +srcdir="${srcdir:-.}" +export LD_LIBRARY_PATH=${srcdir}/../lib/.libs/ + +cat ${srcdir}/../config.log|grep afl-gcc >/dev/null 2>&1 +if test $? != 0;then + echo "compile first library as:" + echo "CC=afl-gcc ./configure" + exit 1 +else + fuzz=afl-gcc +fi + +if test -z "$1";then + echo "Usage: $0 test-case" + echo "Example: $0 gnutls_x509_parser_fuzzer" + exit 1 +fi + +TEST=$1 +rm -f ${TEST} +export LD_LIBRARY_PATH=$(pwd)/../lib/.libs/ +export CFLAGS="-g -O2 -I/usr/local/include -I../lib/includes -I.." +${fuzz} ${CFLAGS} -o ${TEST} main.c ${TEST}.c -L../lib/.libs/ -lgnutls || exit 1 + +TMPOUT=${TEST}.$$.out +mkdir -p ${TMPOUT} +afl-fuzz -i ${TEST}.in -o ${TMPOUT} -- ./${TEST} + +echo "output was stored in $TMPOUT" + +exit 0 -- cgit v1.2.1