5 export SANITIZER
=${SANITIZER:-address}
6 flags
="-O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION"
7 coverage_flags
="-fsanitize=fuzzer-no-link"
9 sanitizer_flags
="-fsanitize=address -fsanitize-address-use-after-scope"
10 if [[ "$SANITIZER" == "undefined" ]]; then
11 sanitizer_flags
="-fsanitize=undefined"
12 elif [[ "$SANITIZER" == "memory" ]]; then
13 sanitizer_flags
="-fsanitize=memory -fsanitize-memory-track-origins"
16 export CC
=${CC:-clang}
17 export CFLAGS
=${CFLAGS:-$flags $sanitizer_flags $coverage_flags}
19 export CXX
=${CXX:-clang++}
20 export CXXFLAGS
=${CXXFLAGS:-$flags $sanitizer_flags $coverage_flags}
22 export OUT
=${OUT:-$(pwd)/out}
25 export LIB_FUZZING_ENGINE
=${LIB_FUZZING_ENGINE:--fsanitize=fuzzer}
27 # turn off the libutil dependency
28 sed -i 's/^AC_CHECK_LIB(util/#/' configure.ac
38 --disable-capabilities \
39 --disable-no-undefined \
45 for fuzz_target_source
in src
/tests
/fuzz-lxc
*.c
; do
46 fuzz_target_name
=$
(basename "$fuzz_target_source" ".c")
47 cp "src/tests/$fuzz_target_name" "$OUT"
50 perl
-lne 'if (/config_jump_table\[\]\s*=/../^}/) { /"([^"]+)"/ && print "$1=" }' src
/lxc
/confile.c
>doc
/examples
/keys.conf
51 [[ -s doc
/examples
/keys.conf
]]
53 perl
-lne 'if (/config_jump_table_net\[\]\s*=/../^}/) { /"([^"]+)"/ && print "lxc.net.$1=" }' src
/lxc
/confile.c
>doc
/examples
/lxc-net-keys.conf
54 [[ -s doc
/examples
/lxc-net-keys.conf
]]
56 zip -r $OUT/fuzz-lxc-config-read_seed_corpus.
zip doc
/examples
58 mkdir fuzz-lxc-define-load_seed_corpus
59 perl
-lne '/([^=]+)/ && print "printf $1= >fuzz-lxc-define-load_seed_corpus/$1"' doc
/examples
/{keys
,lxc-net-keys
}.conf | bash
60 zip -r $OUT/fuzz-lxc-define-load_seed_corpus.
zip fuzz-lxc-define-load_seed_corpus