core: unset HOME=/ that the kernel gives us
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 21 May 2019 17:26:12 +0000 (19:26 +0200)
committerMichael Biebl <biebl@debian.org>
Thu, 18 Mar 2021 19:59:14 +0000 (19:59 +0000)
Partially fixes #12389.

%h would return "/" in a machine, but "/root" in a container. Let's fix
this by resetting $HOME to the expected value.

(cherry picked from commit 9d48671c62de133a2b9fe7c31e70c0ff8e68f2db)

Gbp-Pq: Name core-unset-HOME-that-the-kernel-gives-us.patch

src/core/main.c

index 561f956f0a5b9edbe8287dc723833e6f4413a3a5..bc7fcc6df07a9c8b2805924d512aeeb6cc52b747 100644 (file)
@@ -1503,6 +1503,11 @@ static int fixup_environment(void) {
         if (setenv("TERM", t, 1) < 0)
                 return -errno;
 
+        /* The kernels sets HOME=/ for init. Let's undo this. */
+        if (path_equal_ptr(getenv("HOME"), "/") &&
+            unsetenv("HOME") < 0)
+                log_warning_errno(errno, "Failed to unset $HOME: %m");
+
         return 0;
 }