Handle { NULL } argv[] properly in manual arg-reduction
Thanks izabera for reporting this!
This commit is contained in:
parent
ea8622a4ce
commit
e92a1aef54
|
@ -17,7 +17,7 @@ main(int argc, char *argv[])
|
|||
ssize_t off;
|
||||
char *p;
|
||||
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (argc != 1 && argc != 2)
|
||||
usage();
|
||||
|
|
2
chmod.c
2
chmod.c
|
@ -35,7 +35,7 @@ main(int argc, char *argv[])
|
|||
.follow = 'P', .flags = 0 };
|
||||
size_t i;
|
||||
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
for (; *argv && (*argv)[0] == '-'; argc--, argv++) {
|
||||
if (!(*argv)[1])
|
||||
|
|
2
chroot.c
2
chroot.c
|
@ -17,7 +17,7 @@ main(int argc, char *argv[])
|
|||
char *shell[] = { "/bin/sh", "-i", NULL }, *aux, *cmd;
|
||||
int savederrno;
|
||||
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (!argc)
|
||||
usage();
|
||||
|
|
2
cksum.c
2
cksum.c
|
@ -97,7 +97,7 @@ main(int argc, char *argv[])
|
|||
{
|
||||
int fd;
|
||||
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (!argc) {
|
||||
cksum(0, NULL);
|
||||
|
|
|
@ -13,7 +13,7 @@ usage(void)
|
|||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (argc != 1)
|
||||
usage();
|
||||
|
|
2
echo.c
2
echo.c
|
@ -8,7 +8,7 @@ main(int argc, char *argv[])
|
|||
{
|
||||
int nflag = 0;
|
||||
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (*argv && !strcmp(*argv, "-n")) {
|
||||
nflag = 1;
|
||||
|
|
2
expr.c
2
expr.c
|
@ -257,7 +257,7 @@ main(int argc, char *argv[])
|
|||
{
|
||||
int ret;
|
||||
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
ret = !parse(argv, argc);
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ main(int argc, char *argv[])
|
|||
{
|
||||
char host[HOST_NAME_MAX + 1];
|
||||
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (!argc) {
|
||||
if (gethostname(host, sizeof(host)) < 0)
|
||||
|
|
3
kill.c
3
kill.c
|
@ -62,7 +62,8 @@ main(int argc, char *argv[])
|
|||
size_t i;
|
||||
int ret = 0, sig = SIGTERM;
|
||||
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (!argc)
|
||||
usage();
|
||||
|
||||
|
|
2
link.c
2
link.c
|
@ -12,7 +12,7 @@ usage(void)
|
|||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (argc != 2)
|
||||
usage();
|
||||
|
|
|
@ -15,7 +15,7 @@ main(int argc, char *argv[])
|
|||
{
|
||||
char *login;
|
||||
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (argc)
|
||||
usage();
|
||||
|
|
2
nohup.c
2
nohup.c
|
@ -19,7 +19,7 @@ main(int argc, char *argv[])
|
|||
{
|
||||
int fd, savederrno;
|
||||
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (!argc)
|
||||
usage();
|
||||
|
|
|
@ -12,7 +12,7 @@ main(int argc, char *argv[])
|
|||
char *var;
|
||||
int ret = 0;
|
||||
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (!argc) {
|
||||
for (; *environ; environ++)
|
||||
|
|
2
setsid.c
2
setsid.c
|
@ -15,7 +15,7 @@ main(int argc, char *argv[])
|
|||
{
|
||||
int savederrno;
|
||||
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (!argc)
|
||||
usage();
|
||||
|
|
2
sleep.c
2
sleep.c
|
@ -14,7 +14,7 @@ main(int argc, char *argv[])
|
|||
{
|
||||
unsigned seconds;
|
||||
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (argc != 1)
|
||||
usage();
|
||||
|
|
2
sponge.c
2
sponge.c
|
@ -17,7 +17,7 @@ main(int argc, char *argv[])
|
|||
char tmp[] = "/tmp/sponge-XXXXXX";
|
||||
int fd, tmpfd;
|
||||
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (argc != 1)
|
||||
usage();
|
||||
|
|
2
sync.c
2
sync.c
|
@ -12,7 +12,7 @@ usage(void)
|
|||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (argc)
|
||||
usage();
|
||||
|
|
4
test.c
4
test.c
|
@ -234,9 +234,9 @@ main(int argc, char *argv[])
|
|||
int (*narg[])(char *[]) = { noarg, onearg, twoarg, threearg, fourarg };
|
||||
size_t len;
|
||||
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
len = strlen(argv0);
|
||||
len = argv0 ? strlen(argv0) : 0;
|
||||
if (len && argv0[--len] == '[' && (!len || argv0[--len] == '/') && strcmp(argv[--argc], "]"))
|
||||
enprintf(2, "no matching ]\n");
|
||||
|
||||
|
|
2
tty.c
2
tty.c
|
@ -15,7 +15,7 @@ main(int argc, char *argv[])
|
|||
{
|
||||
char *tty;
|
||||
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (argc)
|
||||
usage();
|
||||
|
|
2
unlink.c
2
unlink.c
|
@ -12,7 +12,7 @@ usage(void)
|
|||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (argc != 1)
|
||||
usage();
|
||||
|
|
2
whoami.c
2
whoami.c
|
@ -18,7 +18,7 @@ main(int argc, char *argv[])
|
|||
uid_t uid;
|
||||
struct passwd *pw;
|
||||
|
||||
argv0 = argv[0], argc--, argv++;
|
||||
argv0 = *argv, argv0 ? (argc--, argv++) : (void *)0;
|
||||
|
||||
if (argc)
|
||||
usage();
|
||||
|
|
Loading…
Reference in New Issue
Block a user