summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorGerrit Pape <pape@smarden.org>2010-05-03 11:14:47 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2010-05-03 11:14:47 +0800
commit18071c7b6a847a7d8703c261eea522d5398fee90 (patch)
tree9bf3d69e0bc98e91c5e9c406c95a8112b30a7c04 /src
parent[JOBS] Fix for job control off warning (diff)
downloaddash-18071c7b6a847a7d8703c261eea522d5398fee90.tar.gz
dash-18071c7b6a847a7d8703c261eea522d5398fee90.zip
[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>
Diffstat (limited to 'src')
-rw-r--r--src/eval.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/eval.c b/src/eval.c
index 2f195af..62d9d5d 100644
--- a/src/eval.c
+++ b/src/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 {