summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--Src/utils.c8
2 files changed, 9 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index eec56154d..25a7ce278 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2014-12-07 Barton E. Schaefer <schaefer@zsh.org>
+
+ * 33894: Src/utils.c: boundary conditions in unmeta(), unmetafy()
+
2014-12-07 Peter Stephenson <p.w.stephenson@ntlworld.com>
* Daniel Shahaf: 33883: Doc/Zsh/expn.yo,
diff --git a/Src/utils.c b/Src/utils.c
index 926814759..5c90638a2 100644
--- a/Src/utils.c
+++ b/Src/utils.c
@@ -4164,7 +4164,7 @@ unmetafy(char *s, int *len)
for (p = s; *p && *p != Meta; p++);
for (t = p; (*t = *p++);)
- if (*t++ == Meta)
+ if (*t++ == Meta && *p)
t[-1] = *p++ ^ 32;
if (len)
*len = t - s;
@@ -4208,8 +4208,10 @@ unmeta(const char *file_name)
meta = 0;
for (t = file_name; *t; t++) {
- if (*t == Meta)
- meta = 1;
+ if (*t == Meta) {
+ meta = t[1];
+ break;
+ }
}
if (!meta) {
/*