about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2002-06-02 18:02:43 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2002-06-02 18:02:43 +0000
commitb14be97dfdcad31d1aaab3239ba9d6f4a3630db1 (patch)
treefe7975e8b7787d664db625a384e042194212d09c
parent7f7f6ca1bac49513b403e604e66853ee61f8d626 (diff)
downloadzsh-b14be97dfdcad31d1aaab3239ba9d6f4a3630db1.tar.gz
zsh-b14be97dfdcad31d1aaab3239ba9d6f4a3630db1.tar.xz
zsh-b14be97dfdcad31d1aaab3239ba9d6f4a3630db1.zip
17272: inner function definition could define nonsense
-rw-r--r--ChangeLog6
-rw-r--r--Src/parse.c2
2 files changed, 8 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 671afac4e..701b9a0ae 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2002-06-02  Peter Stephenson  <pws@pwstephenson.fsnet.co.uk>
+
+	* ?????: Src/parse.c: `outer() { inner(); }' succeded; when outer
+	ran it created a bogus `inner' which crashed the shell.  Make
+	original command issue error.
+
 2002-05-31  Clint Adams  <clint@zsh.org>
 
         * unposted: zshconfig.ac: get rid of evil -Wno-implicit
diff --git a/Src/parse.c b/Src/parse.c
index 7da0667a5..542a9791b 100644
--- a/Src/parse.c
+++ b/Src/parse.c
@@ -1566,6 +1566,8 @@ par_simple(int *complex, int nr)
 		pl = ecadd(WCB_PIPE(WC_PIPE_END, 0));
 
 		par_cmd(&c);
+		if (!c)
+		    YYERROR(oecused);
 
 		set_sublist_code(sl, WC_SUBLIST_END, 0, ecused - 1 - sl, c);
 		set_list_code(ll, (Z_SYNC | Z_END), c);