diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2015-10-29 19:46:40 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2015-10-29 19:46:40 +0100 |
commit | e2f32c02b149f5a128c634231a0ef12d03843967 (patch) | |
tree | 0acd6d9ebe1720ac40de5b847281104a57deb95d | |
parent | 383b885ff7654dc0171b5c1eaa449bb1e1cfe8f0 (diff) | |
download | busybox-e2f32c02b149f5a128c634231a0ef12d03843967.tar.gz |
ash: fix command -- crash
busybox sh -c 'command --' segfaults because parse_command_args
returns a pointer to a null pointer.
Based on commit 18071c7 from git://git.kernel.org/pub/scm/utils/dash/dash.git
by Gerrit Pape.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | shell/ash.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/shell/ash.c b/shell/ash.c index 18c7ff523..8f0a5e0be 100644 --- a/shell/ash.c +++ b/shell/ash.c @@ -8878,14 +8878,15 @@ parse_command_args(char **argv, const char **path) for (;;) { cp = *++argv; if (!cp) - return 0; + return NULL; if (*cp++ != '-') break; c = *cp++; if (!c) break; if (c == '-' && !*cp) { - argv++; + if (!*++argv) + return NULL; break; } do { @@ -8895,7 +8896,7 @@ parse_command_args(char **argv, const char **path) break; default: /* run 'typecmd' for other options */ - return 0; + return NULL; } c = *cp++; } while (c); |