libbb: make xchroot do a chdir("/") after chroot

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2012-03-08 00:28:24 +01:00
parent 39c2cb2e93
commit 0687a5b496
6 changed files with 6 additions and 8 deletions

View File

@ -31,7 +31,6 @@ int chroot_main(int argc UNUSED_PARAM, char **argv)
if (!*argv)
bb_show_usage();
xchroot(*argv);
xchdir("/");
++argv;
if (!*argv) { /* no 2nd param (PROG), use shell */

View File

@ -362,6 +362,7 @@ void FAST_FUNC xchroot(const char *path)
{
if (chroot(path))
bb_perror_msg_and_die("can't change root directory to %s", path);
xchdir("/");
}
// Print a warning message if opendir() fails, but don't die.

View File

@ -1179,8 +1179,7 @@ int ftpd_main(int argc UNUSED_PARAM, char **argv)
#endif
if (argv[optind]) {
xchdir(argv[optind]);
chroot(".");
xchroot(argv[optind]);
}
//umask(077); - admin can set umask before starting us

View File

@ -224,7 +224,7 @@ static int sysctl_handle_preload_file(const char *filename)
parser = config_open(filename);
/* Must do it _after_ config_open(): */
xchdir("/proc/sys");
/* xchroot(".") - if you are paranoid */
/* xchroot("/proc/sys") - if you are paranoid */
//TODO: ';' is comment char too
//TODO: comment may be only at line start. "var=1 #abc" - "1 #abc" is the value
@ -260,7 +260,7 @@ int sysctl_main(int argc UNUSED_PARAM, char **argv)
return sysctl_handle_preload_file(*argv ? *argv : "/etc/sysctl.conf");
}
xchdir("/proc/sys");
/* xchroot(".") - if you are paranoid */
/* xchroot("/proc/sys") - if you are paranoid */
if (opt & (FLAG_TABLE_FORMAT | FLAG_SHOW_ALL)) {
return sysctl_act_recursive(".");
}

View File

@ -417,8 +417,7 @@ int chpst_main(int argc UNUSED_PARAM, char **argv)
}
if (opt & OPT_root) {
xchdir(root);
xchroot(".");
xchroot(root);
}
if (opt & OPT_u) {

View File

@ -114,7 +114,7 @@ int switch_root_main(int argc UNUSED_PARAM, char **argv)
}
xchroot(".");
// The chdir is needed to recalculate "." and ".." links
xchdir("/");
/*xchdir("/"); - done in xchroot */
// If a new console specified, redirect stdin/stdout/stderr to it
if (console) {