summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--Src/parse.c2
-rw-r--r--Test/A04redirect.ztst9
3 files changed, 13 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 8ac6df15e..bc7f3d7bb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2017-05-08 Peter Stephenson <p.stephenson@samsung.com>
+ * 41073: Src/parse.c, Test/A04redirect.ztst: off-by-one error
+ checking for {varid} syntax.
+
* users/22688: Src/parse.c, Test/A04redirect.ztst: Allow mixing
of redirections and arguments after anonymous functions.
diff --git a/Src/parse.c b/Src/parse.c
index b0de9a863..8769baae4 100644
--- a/Src/parse.c
+++ b/Src/parse.c
@@ -1836,7 +1836,7 @@ par_simple(int *cmplx, int nr)
if (*ptr == Outbrace && ptr > tokstr + 1)
{
- if (itype_end(tokstr+1, IIDENT, 0) >= ptr - 1)
+ if (itype_end(tokstr+1, IIDENT, 0) >= ptr)
{
char *toksave = tokstr;
char *idstring = dupstrpfx(tokstr+1, eptr-tokstr-1);
diff --git a/Test/A04redirect.ztst b/Test/A04redirect.ztst
index 2671080c2..cb82751ce 100644
--- a/Test/A04redirect.ztst
+++ b/Test/A04redirect.ztst
@@ -165,6 +165,15 @@
?About to close a second time
*?\(eval\):*: failed to close file descriptor *
+ eval $'fn-varid() { print {\x18}<<0 }'
+ { which -x2 fn-varid; fn-varid } | tr $'\x18' '?'
+0:Regression test for off-by-one in varid check
+>fn-varid () {
+> print {?} <<0
+>0
+>}
+>{?}
+
print foo >&-
0:'>&-' redirection