aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerrit Pape <pape@smarden.org>2010-05-03 11:14:47 +0800
committermaximilian attems <max@stro.at>2011-06-03 18:04:46 +0200
commit9d2bc6ea26d8b14fab0d78288db96cc06cef4545 (patch)
tree4e5771ca9e197ddc338f332dffff8f25e492df03
parenta74424afaa20545bdd6e8b802e2e55d9012c83af (diff)
downloadklibc-9d2bc6ea26d8b14fab0d78288db96cc06cef4545.tar.gz
[klibc] [EVAL] Fix command -- crash
parse_command_args() returning a **argv pointer with *argv == 0 makes dash segfault in find_command(). To reproduce run dash -c 'command --' With this commit, parse_command_args() returns 0 if *argv is null after parsing --, and so fixes the subsequent segfault. Reported by Jonny through http://bugs.debian.org/579543 Signed-off-by: Gerrit Pape <pape@smarden.org> Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: maximilian attems <max@stro.at>
-rw-r--r--usr/dash/eval.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/usr/dash/eval.c b/usr/dash/eval.c
index 876ea9b1a802b..65562f1a8354c 100644
--- a/usr/dash/eval.c
+++ b/usr/dash/eval.c
@@ -651,7 +651,8 @@ parse_command_args(char **argv, const char **path)
if (!(c = *cp++))
break;
if (c == '-' && !*cp) {
- argv++;
+ if (!*++argv)
+ return 0;
break;
}
do {