diff options
author | Peter Stephenson <pws@zsh.org> | 2017-05-08 18:00:55 +0100 |
---|---|---|
committer | Peter Stephenson <pws@zsh.org> | 2017-05-08 18:00:55 +0100 |
commit | af1c82d646d2f1fa9cecbfcffd0159cc3cebe237 (patch) | |
tree | 14d2e3c92dec4c12afc753cccd4e8f301823f17f | |
parent | 641a764b8203de5e5f5c9f1d6d5b0a48c26ca9e7 (diff) | |
download | zsh-af1c82d646d2f1fa9cecbfcffd0159cc3cebe237.tar.gz zsh-af1c82d646d2f1fa9cecbfcffd0159cc3cebe237.tar.xz zsh-af1c82d646d2f1fa9cecbfcffd0159cc3cebe237.zip |
40173: Off-by-one error checking for {varid}.
This caused a single unprintable character in braces before a redirection to be treated as an indentifier.
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | Src/parse.c | 2 | ||||
-rw-r--r-- | Test/A04redirect.ztst | 9 |
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 |