]>
Commit | Line | Data |
---|---|---|
dec64820 EV |
1 | #!/bin/bash |
2 | ||
3 | set -ex | |
4 | ||
3952fb45 | 5 | export LC_CTYPE=C.UTF-8 |
745d6048 | 6 | |
dec64820 | 7 | export CC=${CC:-clang} |
dec64820 | 8 | export CXX=${CXX:-clang++} |
3952fb45 CB |
9 | clang_version="$($CC --version | sed -nr 's/.*version ([^ ]+?) .*/\1/p' | sed -r 's/-$//')" |
10 | ||
11 | SANITIZER=${SANITIZER:-address -fsanitize-address-use-after-scope} | |
12 | flags="-O1 -fno-omit-frame-pointer -g -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION -fsanitize=$SANITIZER" | |
13 | ||
14 | clang_lib="/usr/lib64/clang/${clang_version}/lib/linux" | |
15 | [ -d "$clang_lib" ] || clang_lib="/usr/lib/clang/${clang_version}/lib/linux" | |
16 | ||
17 | export CFLAGS=${CFLAGS:-$flags} | |
18 | export CXXFLAGS=${CXXFLAGS:-$flags} | |
19 | export LDFLAGS=${LDFLAGS:--L${clang_lib}} | |
dec64820 EV |
20 | |
21 | export OUT=${OUT:-$(pwd)/out} | |
22 | mkdir -p $OUT | |
23 | ||
0196c4df CB |
24 | apt-get update -qq |
25 | apt-get install --yes --no-install-recommends \ | |
26 | build-essential docbook2x doxygen git \ | |
27 | wget xz-utils systemd-coredump pkgconf | |
28 | apt-get remove --yes lxc-utils liblxc-common liblxc1 liblxc-dev | |
29 | ||
30 | # make sure we have a new enough meson version | |
31 | pip3 install meson ninja | |
32 | ||
b8b31ab3 CB |
33 | # Sanitized build |
34 | meson setup san_build \ | |
35 | -Dprefix=/usr \ | |
36 | -Db_lundef=false \ | |
9fec9fef | 37 | -Dtests=false \ |
b8b31ab3 CB |
38 | -Dpam-cgroup=false \ |
39 | -Dwerror=true \ | |
40 | -Dtools=false \ | |
41 | -Dcommands=false \ | |
42 | -Dcapabilities=false \ | |
43 | -Dapparmor=false \ | |
44 | -Dopenssl=false \ | |
45 | -Dselinux=false \ | |
cfa85da6 CB |
46 | -Dseccomp=false \ |
47 | -Db_lto=false \ | |
48 | -Db_pie=false \ | |
49 | -Doss-fuzz=true | |
50 | ninja -C san_build -v | |
dec64820 | 51 | |
e8694d9a EV |
52 | for fuzz_target_source in src/tests/fuzz-lxc*.c; do |
53 | fuzz_target_name=$(basename "$fuzz_target_source" ".c") | |
8f7ba7c8 | 54 | cp "san_build/src/tests/$fuzz_target_name" "$OUT" |
e8694d9a | 55 | done |
dec64820 | 56 | |
8f7ba7c8 CB |
57 | perl -lne 'if (/config_jump_table\[\]\s*=/../^}/) { /"([^"]+)"/ && print "$1=" }' src/lxc/confile.c >san_build/doc/examples/keys.conf |
58 | [[ -s san_build/doc/examples/keys.conf ]] | |
593f13bf | 59 | |
8f7ba7c8 CB |
60 | perl -lne 'if (/config_jump_table_net\[\]\s*=/../^}/) { /"([^"]+)"/ && print "lxc.net.$1=" }' src/lxc/confile.c >san_build/doc/examples/lxc-net-keys.conf |
61 | [[ -s san_build/doc/examples/lxc-net-keys.conf ]] | |
593f13bf | 62 | |
8f7ba7c8 | 63 | zip -r $OUT/fuzz-lxc-config-read_seed_corpus.zip san_build/doc/examples |
e8694d9a EV |
64 | |
65 | mkdir fuzz-lxc-define-load_seed_corpus | |
8f7ba7c8 | 66 | perl -lne '/([^=]+)/ && print "printf $1= >fuzz-lxc-define-load_seed_corpus/$1"' san_build/doc/examples/{keys,lxc-net-keys}.conf | bash |
e8694d9a | 67 | zip -r $OUT/fuzz-lxc-define-load_seed_corpus.zip fuzz-lxc-define-load_seed_corpus |