]>
Commit | Line | Data |
---|---|---|
dec64820 EV |
1 | #!/bin/bash |
2 | ||
3 | set -ex | |
4 | ||
5 | export SANITIZER=${SANITIZER:-address} | |
6 | flags="-O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION" | |
dec64820 EV |
7 | coverage_flags="-fsanitize=fuzzer-no-link" |
8 | ||
745d6048 EV |
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" | |
14 | fi | |
15 | ||
dec64820 EV |
16 | export CC=${CC:-clang} |
17 | export CFLAGS=${CFLAGS:-$flags $sanitizer_flags $coverage_flags} | |
18 | ||
19 | export CXX=${CXX:-clang++} | |
20 | export CXXFLAGS=${CXXFLAGS:-$flags $sanitizer_flags $coverage_flags} | |
21 | ||
22 | export OUT=${OUT:-$(pwd)/out} | |
23 | mkdir -p $OUT | |
24 | ||
25 | export LIB_FUZZING_ENGINE=${LIB_FUZZING_ENGINE:--fsanitize=fuzzer} | |
26 | ||
b8b31ab3 CB |
27 | # Sanitized build |
28 | meson setup san_build \ | |
29 | -Dprefix=/usr \ | |
30 | -Db_lundef=false \ | |
9fec9fef | 31 | -Dtests=false \ |
b8b31ab3 CB |
32 | -Dpam-cgroup=false \ |
33 | -Dwerror=true \ | |
34 | -Dtools=false \ | |
35 | -Dcommands=false \ | |
36 | -Dcapabilities=false \ | |
37 | -Dapparmor=false \ | |
38 | -Dopenssl=false \ | |
39 | -Dselinux=false \ | |
40 | -Db_lto_mode=default \ | |
41 | -Db_sanitize=address,undefined | |
42 | ninja -C san_build | |
43 | ninja -C san_build install | |
dec64820 | 44 | |
e8694d9a EV |
45 | for fuzz_target_source in src/tests/fuzz-lxc*.c; do |
46 | fuzz_target_name=$(basename "$fuzz_target_source" ".c") | |
1667e14e | 47 | cp "src/tests/$fuzz_target_name" "$OUT" |
e8694d9a | 48 | done |
dec64820 | 49 | |
593f13bf EV |
50 | perl -lne 'if (/config_jump_table\[\]\s*=/../^}/) { /"([^"]+)"/ && print "$1=" }' src/lxc/confile.c >doc/examples/keys.conf |
51 | [[ -s doc/examples/keys.conf ]] | |
52 | ||
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 ]] | |
55 | ||
dec64820 | 56 | zip -r $OUT/fuzz-lxc-config-read_seed_corpus.zip doc/examples |
e8694d9a EV |
57 | |
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 |