From: Daan De Meyer Date: Mon, 15 Jul 2024 21:07:52 +0000 (+0200) Subject: TEST-13-NSPAWN: make sure we don't load libnss_systemd X-Git-Tag: v257-rc1~903^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5ac0dc70ff330a531539a92552fbeb0f542edfb5;p=thirdparty%2Fsystemd.git TEST-13-NSPAWN: make sure we don't load libnss_systemd Let's make sure we don't load libnss_systemd.so from bash as the necessary environment variables aren't set to make that work when we're running with sanitizers enabled. We can't add a sanitizer wrapper for bash as the wrapper runs using bash so you end up in a loop. --- diff --git a/test/units/TEST-13-NSPAWN.nspawn.sh b/test/units/TEST-13-NSPAWN.nspawn.sh index c73b49b1a54..ee0fef8d061 100755 --- a/test/units/TEST-13-NSPAWN.nspawn.sh +++ b/test/units/TEST-13-NSPAWN.nspawn.sh @@ -179,6 +179,10 @@ elif [[ $1 == initgroups ]]; then fi EOF chmod +x "$root/bin/getent" + # The useradd is important here so the user is added to /etc/passwd. If the user is not in /etc/passwd, + # bash will end up loading libnss_systemd.so which breaks when libnss_systemd.so is built with sanitizers + # as bash isn't invoked with the necessary environment variables for that. + useradd --root="$root" --uid 1000 --user-group --create-home testuser systemd-nspawn --directory="$root" bash -xec '[[ $USER == root ]]' systemd-nspawn --directory="$root" --user=testuser bash -xec '[[ $USER == testuser ]]' @@ -672,8 +676,10 @@ fi EOF chmod +x "$root/bin/getent" - mkdir -p "$root/home/testuser" - chown 1010:1010 "$root/home/testuser" + # The useradd is important here so the user is added to /etc/passwd. If the user is not in /etc/passwd, + # bash will end up loading libnss_systemd.so which breaks when libnss_systemd.so is built with sanitizers + # as bash isn't invoked with the necessary environment variables for that. + useradd --root="$root" --uid 1010 --user-group --create-home testuser cmd='PERMISSIONS=$(stat -c "%u:%g" /home/testuser/file); if [[ $PERMISSIONS != "1010:1010" ]]; then echo "*** wrong permissions: $PERMISSIONS"; return 1; fi; touch /home/testuser/other_file' if ! SYSTEMD_LOG_TARGET=console \