commit eb137b9e42bc16ab92b4d4be52b27c97ec090096
parent 520d87e58ebc263d8ef975ba274c6d7afaaf149a
Author: FRIGN <dev@frign.de>
Date: Mon, 2 Mar 2015 17:41:58 +0100
Audit chroot(1)
1) Fix usage()
2) Rename *p to *cmd
3) _exit trick with 126 + (savederrno == ENOENT)
4) return-style-fix
Diffstat:
2 files changed, 11 insertions(+), 11 deletions(-)
diff --git a/README b/README
@@ -15,7 +15,7 @@ The following tools are implemented ('*' == finished, '#' == UTF-8 support,
=* chgrp yes none
=* chmod yes none
=* chown yes none
-=* chroot non-posix none
+=*| chroot non-posix none
=* cksum yes none
=* cmp yes none
#* cols non-posix none
diff --git a/chroot.c b/chroot.c
@@ -8,13 +8,13 @@
static void
usage(void)
{
- eprintf("usage: chroot dir [cmd [arg ...]]\n");
+ eprintf("usage: %s dir [cmd [arg ...]]\n", argv0);
}
int
main(int argc, char *argv[])
{
- char *shell[] = { "/bin/sh", "-i", NULL }, *aux, *p;
+ char *shell[] = { "/bin/sh", "-i", NULL }, *aux, *cmd;
int savederrno;
ARGBEGIN {
@@ -22,7 +22,7 @@ main(int argc, char *argv[])
usage();
} ARGEND;
- if (argc < 1)
+ if (!argc)
usage();
if ((aux = getenv("SHELL")))
@@ -35,16 +35,16 @@ main(int argc, char *argv[])
eprintf("chdir:");
if (argc == 1) {
- p = *shell;
+ cmd = *shell;
execvp(*shell, shell);
} else {
- p = argv[1];
- execvp(argv[1], argv+1);
+ cmd = argv[1];
+ execvp(argv[1], argv + 1);
}
savederrno = errno;
- weprintf("execvp %s:", p);
- _exit(savederrno == ENOENT ? 127 : 126);
- /* unreachable */
- return 0;
+ weprintf("execvp %s:", cmd);
+ _exit(126 + (savederrno == ENOENT));
+
+ return 0; /* not reached */
}