about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Stephenson <pws@zsh.org>2016-10-25 11:53:49 +0100
committerPeter Stephenson <pws@zsh.org>2016-10-25 11:53:49 +0100
commit39ae9cd10a5987ac71dee8bef7bd3bc2ba5e4eb8 (patch)
tree2e45b010125e0bfd6bc9c90dfee4d85315d0e081
parent0f5e670cde5f844680a20f986786249dfe983584 (diff)
downloadzsh-39ae9cd10a5987ac71dee8bef7bd3bc2ba5e4eb8.tar.gz
zsh-39ae9cd10a5987ac71dee8bef7bd3bc2ba5e4eb8.tar.xz
zsh-39ae9cd10a5987ac71dee8bef7bd3bc2ba5e4eb8.zip
39723: metafy string passed to pattern in complist.
Also additional safety tokenizing a string with Meta characters.
-rw-r--r--ChangeLog6
-rw-r--r--Src/Zle/complist.c1
-rw-r--r--Src/glob.c4
3 files changed, 11 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index ee1fd94dc..775ad22e6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-10-25  Peter Stephenson  <p.stephenson@samsung.com>
+
+	* 39723: Src/Zle/complist.c, Src/glob.c: metafy string to be
+	used in pattern for complist.  Also skip metafied characters
+	when tokenizing (typically this has no effect, however).
+
 2016-10-24  Barton E. Schaefer  <schaefer@zsh.org>
 
 	* unposted: NEWS, README: update for 39704.
diff --git a/Src/Zle/complist.c b/Src/Zle/complist.c
index 39ac782eb..d4672a194 100644
--- a/Src/Zle/complist.c
+++ b/Src/Zle/complist.c
@@ -415,6 +415,7 @@ getcoldef(char *s)
 		break;
 	    *s++ = '\0';
 	}
+	p = metafy(p, strlen(p), META_USEHEAP);
 	tokenize(p);
 	if ((prog = patcompile(p, 0, NULL))) {
 	    Patcol pc, po;
diff --git a/Src/glob.c b/Src/glob.c
index a845c5fbb..50f6dceb3 100644
--- a/Src/glob.c
+++ b/Src/glob.c
@@ -3499,6 +3499,10 @@ zshtokenize(char *s, int flags)
     for (; *s; s++) {
       cont:
 	switch (*s) {
+	case Meta:
+	    /* skip both Meta and following character */
+	    s++;
+	    break;
 	case Bnull:
 	case Bnullkeep:
 	case '\\':