diff --git a/mnexec.c b/mnexec.c index ed44f60810c0354854fb827ca799b51a11f566a1..a9cb8678956aab449a4ad37a4eb1b56be4a6ffe5 100644 --- a/mnexec.c +++ b/mnexec.c @@ -99,6 +99,7 @@ int main(int argc, char *argv[]) char path[PATH_MAX]; int nsid; int pid; + char *cwd = get_current_dir_name(); static struct sched_param sp; while ((c = getopt(argc, argv, "+cdnpa:g:r:vh")) != -1) @@ -157,18 +158,17 @@ int main(int argc, char *argv[]) sprintf(path, "/proc/%d/ns/mnt", pid); nsid = open(path, O_RDONLY); if (nsid < 0 || setns(nsid, 0) != 0) { - char *cwd = get_current_dir_name(); /* Plan B: chroot/chdir into pid's root file system */ sprintf(path, "/proc/%d/root", pid); if (chroot(path) < 0) { perror(path); return 1; } - /* need to chdir to correct working directory */ - if (chdir(cwd) != 0) { - perror(cwd); - return 1; - } + } + /* chdir to correct working directory */ + if (chdir(cwd) != 0) { + perror(cwd); + return 1; } break; case 'g':