]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
nspawn: shown exec() command is misleading
authorLennart Poettering <lennart@poettering.net>
Thu, 2 Feb 2017 17:27:25 +0000 (18:27 +0100)
committerLennart Poettering <lennart@poettering.net>
Thu, 2 Feb 2017 19:10:28 +0000 (20:10 +0100)
There's no point in updating exec_target for each binary we try to
execute, if we override it right-away anyway... Let's just do this once,
and include all binaries we try each time.

Follow-up for 1a68e1e543fd8f899503bec00585a16ada296ef7.

src/nspawn/nspawn.c

index 0474f61d437eedc31cac5829f0d4d70b034ba81a..5594b87efa0de18d961a74f92b421a3dd20f8ea5 100644 (file)
@@ -2317,14 +2317,16 @@ static int inner_child(
                 memcpy_safe(a + 1, arg_parameters, m * sizeof(char*));
                 a[1 + m] = NULL;
 
-                exec_target = a[0] = (char*) "/usr/lib/systemd/systemd";
+                a[0] = (char*) "/usr/lib/systemd/systemd";
                 execve(a[0], a, env_use);
 
-                exec_target = a[0] = (char*) "/lib/systemd/systemd";
+                a[0] = (char*) "/lib/systemd/systemd";
                 execve(a[0], a, env_use);
 
-                exec_target = a[0] = (char*) "/sbin/init";
+                a[0] = (char*) "/sbin/init";
                 execve(a[0], a, env_use);
+
+                exec_target = "/usr/lib/systemd/systemd, /lib/systemd/systemd, /sbin/init";
         } else if (!strv_isempty(arg_parameters)) {
                 exec_target = arg_parameters[0];
                 execvpe(arg_parameters[0], arg_parameters, env_use);
@@ -2333,11 +2335,10 @@ static int inner_child(
                         /* If we cannot change the directory, we'll end up in /, that is expected. */
                         (void) chdir(home ?: "/root");
 
-                exec_target = "/bin/bash";
                 execle("/bin/bash", "-bash", NULL, env_use);
-
-                exec_target = "/bin/sh";
                 execle("/bin/sh", "-sh", NULL, env_use);
+
+                exec_target = "/bin/bash, /bin/sh";
         }
 
         r = -errno;