]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
TEST-13-NSPAWN: make sure we don't load libnss_systemd 33695/head
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Mon, 15 Jul 2024 21:07:52 +0000 (23:07 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Tue, 16 Jul 2024 07:42:17 +0000 (09:42 +0200)
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.

test/units/TEST-13-NSPAWN.nspawn.sh

index c73b49b1a544519cb6a5924d82a34a540058708d..ee0fef8d061a51e7813e94187fd8a166358318e6 100755 (executable)
@@ -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 \