summaryrefslogtreecommitdiff
path: root/chroot.c
diff options
context:
space:
mode:
authorEric Andersen2000-06-02 17:56:45 +0000
committerEric Andersen2000-06-02 17:56:45 +0000
commit808d03ec19e0c8f0c06d9a9defb85fc9a1100441 (patch)
tree51eacc49fad57b2d4d0f63da4da31dd7a7384918 /chroot.c
parent9c8ffa02f4ecd6029233de9d5cdc695fc82fc6df (diff)
downloadbusybox-808d03ec19e0c8f0c06d9a9defb85fc9a1100441.zip
busybox-808d03ec19e0c8f0c06d9a9defb85fc9a1100441.tar.gz
This is a fix for chroot
- Fixed error message when the command is not specified (possibly crash on libc5 systems!) - Debugging output removed - Using fatalError() whenever appropriate Regards, Pavel Roskin
Diffstat (limited to 'chroot.c')
-rw-r--r--chroot.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/chroot.c b/chroot.c
index 34116a6..1c64e08 100644
--- a/chroot.c
+++ b/chroot.c
@@ -38,6 +38,8 @@ static const char chroot_usage[] = "chroot NEWROOT [COMMAND...]\n"
int chroot_main(int argc, char **argv)
{
+ char *prog;
+
if ((argc < 2) || (**(argv + 1) == '-')) {
usage(chroot_usage);
}
@@ -45,27 +47,24 @@ int chroot_main(int argc, char **argv)
argv++;
if (chroot(*argv) || (chdir("/"))) {
- fprintf(stderr, "chroot: cannot change root directory to %s: %s\n",
+ fatalError("chroot: cannot change root directory to %s: %s\n",
*argv, strerror(errno));
- exit(FALSE);
}
argc--;
argv++;
if (argc >= 1) {
- fprintf(stderr, "command: %s\n", *argv);
+ prog = *argv;
execvp(*argv, argv);
} else {
- char *prog;
-
prog = getenv("SHELL");
if (!prog)
prog = "/bin/sh";
execlp(prog, prog, NULL);
}
- fprintf(stderr, "chroot: cannot execute %s: %s\n",
- *argv, strerror(errno));
- exit(FALSE);
+ fatalError("chroot: cannot execute %s: %s\n",
+ prog, strerror(errno));
+
}