1#!/bin/bash -eu 2 3# Testcase 1. Valid fuzzer build. 4################################################################################ 5./configure 6make -j$(nproc) clean 7make -j$(nproc) all 8 9$CXX $CXXFLAGS -std=c++11 -I. \ 10 $SRC/bad_example_fuzzer.cc -o $OUT/bad_example_valid_build \ 11 $LIB_FUZZING_ENGINE ./libz.a 12 13 14# Testcase 2. Silent startup crash. 15################################################################################ 16./configure 17make -j$(nproc) clean 18make -j$(nproc) all 19 20$CXX $CXXFLAGS -std=c++11 -I. -DINTENTIONAL_STARTUP_CRASH \ 21 $SRC/bad_example_fuzzer.cc -o $OUT/bad_example_startup_crash \ 22 $LIB_FUZZING_ENGINE ./libz.a 23 24 25# The latest two examples won't work for coverage build, bail out. 26if [[ $SANITIZER = *coverage* ]]; then 27 exit 0 28fi 29 30 31# Testcase 3. Partially ignore the flags provided by OSS-Fuzz. 32################################################################################ 33export CFLAGS_ORIG="$CFLAGS" 34export CFLAGS="-O1" 35export CXXFLAGS_ORIG="$CXXFLAGS" 36export CXXFLAGS="-O1 -stdlib=libc++" 37 38./configure 39make -j$(nproc) clean 40make -j$(nproc) all 41 42$CXX -fsanitize=$SANITIZER $CXXFLAGS_ORIG -std=c++11 -I. \ 43 $SRC/bad_example_fuzzer.cc -o $OUT/bad_example_partial_instrumentation \ 44 $LIB_FUZZING_ENGINE ./libz.a 45 46 47# Testcase 4. Completely ignore the flags provided by OSS-Fuzz. 48################################################################################ 49./configure 50make -j$(nproc) clean 51make -j$(nproc) all 52 53$CXX -fsanitize=$SANITIZER $CXXFLAGS -std=c++11 -I. \ 54 $SRC/bad_example_fuzzer.cc -o $OUT/bad_example_no_instrumentation \ 55 $LIB_FUZZING_ENGINE ./libz.a 56 57 58# Testcase 5. Enable multiple sanitizers. 59################################################################################ 60# Add UBSan to ASan or MSan build. Add ASan to UBSan build. 61EXTRA_SANITIZER="undefined" 62if [[ $SANITIZER = *undefined* ]]; then 63 EXTRA_SANITIZER="address" 64fi 65 66export CFLAGS="$CFLAGS_ORIG -fsanitize=$EXTRA_SANITIZER" 67export CXXFLAGS="$CXXFLAGS_ORIG -fsanitize=$EXTRA_SANITIZER" 68 69./configure 70make -j$(nproc) clean 71make -j$(nproc) all 72 73$CXX $CXXFLAGS -std=c++11 -I. \ 74 $SRC/bad_example_fuzzer.cc -o $OUT/bad_example_mixed_sanitizers \ 75 $LIB_FUZZING_ENGINE ./libz.a 76