From ced58da749367fa70b00d00959272054aa7ab48a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 2 Feb 2017 18:27:25 +0100 Subject: nspawn: shown exec() command is misleading 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 | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/nspawn') diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 0474f61d43..5594b87efa 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -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; -- cgit v1.2.3-54-g00ecf