From 25213e16f7bfb371e6a37b520bb256a3202953c2 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Sat, 24 Sep 2022 07:00:36 +0900 Subject: [PATCH 1/2] test: introduce a simple environment file for test service --- test/test-functions | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/test/test-functions b/test/test-functions index 58860dc944..06652cfad6 100644 --- a/test/test-functions +++ b/test/test-functions @@ -854,7 +854,15 @@ fi DEFAULT_ASAN_OPTIONS=${ASAN_OPTIONS:-strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1} DEFAULT_UBSAN_OPTIONS=${UBSAN_OPTIONS:-print_stacktrace=1:print_summary=1:halt_on_error=1} -DEFAULT_ENVIRONMENT="ASAN_OPTIONS=\$DEFAULT_ASAN_OPTIONS UBSAN_OPTIONS=\$DEFAULT_UBSAN_OPTIONS LSAN_OPTIONS=\$DEFAULT_LSAN_OPTIONS" +DEFAULT_ENVIRONMENT="ASAN_OPTIONS=\$DEFAULT_ASAN_OPTIONS UBSAN_OPTIONS=\$DEFAULT_UBSAN_OPTIONS" + +# Create a simple environment file which can be included by systemd services +# that need it (i.e. services that utilize DynamicUser=true and bash, etc.) +cat >/usr/lib/systemd/systemd-asan-env < not found" issues in the future From 326425fb4dfd20c8410be46b6c2c0ea865436de8 Mon Sep 17 00:00:00 2001 From: Frantisek Sumsal Date: Sun, 2 Oct 2022 22:51:56 +0200 Subject: [PATCH 2/2] test: pre-load ASan's DSO for iscsi-init.service The iscsi-init.service calls `sh` which might, in certain circumstances, pull in instrumented systemd NSS modules causing `sh` to fail. Let's mitigate this by pulling in an env file crafted by `create_asan_wrapper()` that (among others) pre-loads ASan's DSO. --- test/test-functions | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/test-functions b/test/test-functions index 06652cfad6..d1e3e993f9 100644 --- a/test/test-functions +++ b/test/test-functions @@ -1047,6 +1047,14 @@ install_iscsi() { # [0] https://github.com/open-iscsi/open-iscsi/commit/f37d5b653f9f251845db3f29b1a3dcb90ec89731 if [[ ! -e /etc/iscsi/initiatorname.iscsi ]]; then image_install "${ROOTLIBDIR:?}"/system/iscsi-init.service + if get_bool "$IS_BUILT_WITH_ASAN"; then + # The iscsi-init.service calls `sh` which might, in certain circumstances, + # pull in instrumented systemd NSS modules causing `sh` to fail. Let's mitigate + # this by pulling in an env file crafted by `create_asan_wrapper()` that + # (among others) pre-loads ASan's DSO. + mkdir -p "${initdir:?}/etc/systemd/system/iscsi-init.service.d/" + printf "[Service]\nEnvironmentFile=/usr/lib/systemd/systemd-asan-env" >"${initdir:?}/etc/systemd/system/iscsi-init.service.d/asan-env.conf" + fi else inst_simple "/etc/iscsi/initiatorname.iscsi" fi