]> git.proxmox.com Git - mirror_lxc.git/blame - src/tests/oss-fuzz.sh
build: separate oss-fuzz tests from regular test builds
[mirror_lxc.git] / src / tests / oss-fuzz.sh
CommitLineData
dec64820
EV
1#!/bin/bash
2
3set -ex
4
5export SANITIZER=${SANITIZER:-address}
6flags="-O1 -fno-omit-frame-pointer -gline-tables-only -DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION"
dec64820
EV
7coverage_flags="-fsanitize=fuzzer-no-link"
8
745d6048
EV
9sanitizer_flags="-fsanitize=address -fsanitize-address-use-after-scope"
10if [[ "$SANITIZER" == "undefined" ]]; then
11 sanitizer_flags="-fsanitize=undefined"
12elif [[ "$SANITIZER" == "memory" ]]; then
13 sanitizer_flags="-fsanitize=memory -fsanitize-memory-track-origins"
14fi
15
dec64820
EV
16export CC=${CC:-clang}
17export CFLAGS=${CFLAGS:-$flags $sanitizer_flags $coverage_flags}
18
19export CXX=${CXX:-clang++}
20export CXXFLAGS=${CXXFLAGS:-$flags $sanitizer_flags $coverage_flags}
21
22export OUT=${OUT:-$(pwd)/out}
23mkdir -p $OUT
24
25export LIB_FUZZING_ENGINE=${LIB_FUZZING_ENGINE:--fsanitize=fuzzer}
26
b8b31ab3
CB
27# Sanitized build
28meson 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
42ninja -C san_build
43ninja -C san_build install
dec64820 44
e8694d9a
EV
45for 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 48done
dec64820 49
593f13bf
EV
50perl -lne 'if (/config_jump_table\[\]\s*=/../^}/) { /"([^"]+)"/ && print "$1=" }' src/lxc/confile.c >doc/examples/keys.conf
51[[ -s doc/examples/keys.conf ]]
52
53perl -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 56zip -r $OUT/fuzz-lxc-config-read_seed_corpus.zip doc/examples
e8694d9a
EV
57
58mkdir fuzz-lxc-define-load_seed_corpus
59perl -lne '/([^=]+)/ && print "printf $1= >fuzz-lxc-define-load_seed_corpus/$1"' doc/examples/{keys,lxc-net-keys}.conf | bash
60zip -r $OUT/fuzz-lxc-define-load_seed_corpus.zip fuzz-lxc-define-load_seed_corpus