about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2008-09-29 17:39:38 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2008-09-29 17:39:38 +0000
commit7be4f882fe27f2a879f4fe83663e5e33fa1f9c77 (patch)
treec04c0cf173aaa7cb4381c4310a8bdffb67662e59
parent28cf4041b4ed58ba2ae9860f9dfc138edcdbb34b (diff)
downloadzsh-7be4f882fe27f2a879f4fe83663e5e33fa1f9c77.tar.gz
zsh-7be4f882fe27f2a879f4fe83663e5e33fa1f9c77.tar.xz
zsh-7be4f882fe27f2a879f4fe83663e5e33fa1f9c77.zip
25772: crash with bad associative array pattern search
-rw-r--r--ChangeLog4
-rw-r--r--Src/params.c2
2 files changed, 6 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 81274d81b..e1f7a96b5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2008-09-29  Peter Stephenson  <pws@csr.com>
 
+	* 25772: Src/params.c: searching an associative array with
+	a bad pattern could cause a crash, seen in _expand following
+	"echo ~[]".
+
 	* 25771: Src/utils.c, Src/zsh.h: shell function context
 	for substitution functions.
 
diff --git a/Src/params.c b/Src/params.c
index 58927f1c0..379d90729 100644
--- a/Src/params.c
+++ b/Src/params.c
@@ -1302,6 +1302,8 @@ getarg(char **str, int *inv, Value v, int a2, zlong *w,
 
 	if (v->isarr) {
 	    if (ishash) {
+		if (!pprog)
+		    return 1;
 		scanprog = pprog;
 		scanstr = s;
 		if (keymatch)