X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=.ci%2Fsanitizers%2Frun.sh;h=3144275a4cb9bfc99a8ffb40a515b7cbb2861903;hb=efca41606d4083eade90047d57cb963eb3b7e731;hp=c2d9dad82fa8bab3e438a87881c58923a1625b67;hpb=7619f84393f824a84e20e03167304b27d3581ac0;p=tinc diff --git a/.ci/sanitizers/run.sh b/.ci/sanitizers/run.sh index c2d9dad8..3144275a 100755 --- a/.ci/sanitizers/run.sh +++ b/.ci/sanitizers/run.sh @@ -2,30 +2,38 @@ set -euo pipefail +dir=$(realpath "$(dirname "$0")") + logs="$GITHUB_WORKSPACE/sanitizer" -mkdir -p "$logs" case "$SANITIZER" in +undefined) + flags='-fsanitize=integer -fsanitize=nullability -fno-sanitize=unsigned-integer-overflow' + export UBSAN_OPTIONS="log_path=$logs/ubsan:print_stacktrace=1" + ;; + address) + flags='-fsanitize-address-use-after-scope -fsanitize=pointer-compare -fsanitize=pointer-subtract' export ASAN_OPTIONS="log_path=$logs/asan:detect_invalid_pointer_pairs=2:strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1" + export LSAN_OPTIONS="suppressions=$dir/suppress.txt:print_suppressions=0" ;; thread) + flags='' export TSAN_OPTIONS="log_path=$logs/tsan" ;; -undefined) - export UBSAN_OPTIONS="log_path=$logs/ubsan:print_stacktrace=1" - ;; - *) echo >&2 "unknown sanitizer $SANITIZER" exit 1 ;; esac -sudo --preserve-env=ASAN_OPTIONS,TSAN_OPTIONS,UBSAN_OPTIONS \ - make check VERBOSE=1 +export CC='clang-12' +export CPPFLAGS='-DDEBUG' +export CFLAGS="-O0 -g -fsanitize=$SANITIZER -fno-omit-frame-pointer -fno-common -fsanitize-blacklist=$dir/ignore.txt $flags" + +bash .ci/test/run.sh "$@" # Check that the sanitizer has not created any log files. # If it has, fail the job to notify the developer.