mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-22 13:33:56 +03:00
Merge pull request #15865 from evverx/ubsan-to-the-rescue
build-system: build the fuzz targets with both ASan and UBSan
This commit is contained in:
commit
a88dce2bdd
@ -3368,6 +3368,8 @@ foreach tuple : sanitizers
|
||||
if want_tests != 'false' and slow_tests
|
||||
test('@0@:@1@:@2@'.format(b, c, sanitizer),
|
||||
env,
|
||||
env : ['UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1'],
|
||||
timeout : 60,
|
||||
args : [exe.full_path(),
|
||||
join_paths(project_source_root, p)])
|
||||
endif
|
||||
|
@ -1,17 +1,17 @@
|
||||
# SPDX-License-Identifier: LGPL-2.1+
|
||||
|
||||
sanitize_address = custom_target(
|
||||
'sanitize-address-fuzzers',
|
||||
output : 'sanitize-address-fuzzers',
|
||||
sanitize_address_undefined = custom_target(
|
||||
'sanitize-address-undefined-fuzzers',
|
||||
output : 'sanitize-address-undefined-fuzzers',
|
||||
command : [meson_build_sh,
|
||||
project_source_root,
|
||||
'@OUTPUT@',
|
||||
'fuzzers',
|
||||
'-Db_lundef=false -Db_sanitize=address',
|
||||
'-Db_lundef=false -Db_sanitize=address,undefined',
|
||||
' '.join(cc.cmd_array()),
|
||||
cxx_cmd])
|
||||
|
||||
sanitizers = [['address', sanitize_address]]
|
||||
sanitizers = [['address,undefined', sanitize_address_undefined]]
|
||||
|
||||
if git.found()
|
||||
out = run_command(
|
||||
|
@ -22,11 +22,10 @@ cd $REPO_ROOT
|
||||
export PATH="$HOME/.local/bin/:$PATH"
|
||||
|
||||
# We use a subset of https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html#available-checks instead of "undefined"
|
||||
# because our fuzzers crash with "pointer-overflow" and "float-cast-overflow":
|
||||
# https://github.com/systemd/systemd/pull/12771#issuecomment-502139157
|
||||
# because our fuzzers crash with "float-cast-overflow":
|
||||
# https://github.com/systemd/systemd/pull/12812#issuecomment-502780455
|
||||
# TODO: figure out what to do about unsigned-integer-overflow: https://github.com/google/oss-fuzz/issues/910
|
||||
export SANITIZER="address -fsanitize=alignment,array-bounds,bool,bounds,builtin,enum,float-divide-by-zero,function,integer-divide-by-zero,nonnull-attribute,null,object-size,return,returns-nonnull-attribute,shift,signed-integer-overflow,unreachable,unsigned-integer-overflow,vla-bound,vptr -fno-sanitize-recover=alignment,array-bounds,bool,bounds,builtin,enum,float-divide-by-zero,function,integer-divide-by-zero,nonnull-attribute,null,object-size,return,returns-nonnull-attribute,shift,signed-integer-overflow,unreachable,vla-bound,vptr"
|
||||
export SANITIZER="address -fsanitize=alignment,array-bounds,bool,bounds,builtin,enum,float-divide-by-zero,function,integer-divide-by-zero,nonnull-attribute,null,object-size,pointer-overflow,return,returns-nonnull-attribute,shift,signed-integer-overflow,unreachable,unsigned-integer-overflow,vla-bound,vptr -fno-sanitize-recover=alignment,array-bounds,bool,bounds,builtin,enum,float-divide-by-zero,function,integer-divide-by-zero,nonnull-attribute,null,object-size,pointer-overflow,return,returns-nonnull-attribute,shift,signed-integer-overflow,unreachable,vla-bound,vptr"
|
||||
tools/oss-fuzz.sh
|
||||
|
||||
FUZZING_TYPE=${1:-regression}
|
||||
|
Loading…
Reference in New Issue
Block a user