[git commit] ash: parser: Fix single-quoted patterns in here-documents
Denys Vlasenko
vda.linux at googlemail.com
Mon Apr 2 11:29:20 UTC 2018
commit: https://git.busybox.net/busybox/commit/?id=c4c2012284c3a3a45843e9400379c84855d853ef
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master
Upstream commit:
From: Herbert Xu <herbert at gondor.apana.org.au>
Date: Fri, 9 Mar 2018 23:07:53 +0800
parser: Fix single-quoted patterns in here-documents
The script
x=*
cat <<- EOF
${x#'*'}
EOF
prints * instead of nothing as it should. The problem is that
when we're in sqsyntax context in a here-document, we won't add
CTLESC as we should. This patch fixes it:
Reported-by: Harald van Dijk <harald at gigawatt.nl>
Signed-off-by: Herbert Xu <herbert at gondor.apana.org.au>
Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
shell/ash.c | 2 +-
shell/ash_test/ash-heredoc/heredoc_var_expand1.right | 4 ++++
shell/ash_test/ash-heredoc/heredoc_var_expand1.tests | 11 +++++++++++
3 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/shell/ash.c b/shell/ash.c
index 97379cd92..70a278f42 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -12005,7 +12005,7 @@ readtoken1(int c, int syntax, char *eofmark, int striptabs)
}
}
#endif
- if (eofmark == NULL || synstack->dblquote)
+ if (!eofmark || synstack->dblquote || synstack->varnest)
USTPUTC(CTLESC, out);
USTPUTC(c, out);
break;
diff --git a/shell/ash_test/ash-heredoc/heredoc_var_expand1.right b/shell/ash_test/ash-heredoc/heredoc_var_expand1.right
new file mode 100644
index 000000000..eb221832d
--- /dev/null
+++ b/shell/ash_test/ash-heredoc/heredoc_var_expand1.right
@@ -0,0 +1,4 @@
+
+Ok1:0
+
+Ok2:0
diff --git a/shell/ash_test/ash-heredoc/heredoc_var_expand1.tests b/shell/ash_test/ash-heredoc/heredoc_var_expand1.tests
new file mode 100755
index 000000000..3b00bab7b
--- /dev/null
+++ b/shell/ash_test/ash-heredoc/heredoc_var_expand1.tests
@@ -0,0 +1,11 @@
+x='*'
+
+cat <<- EOF
+ ${x#'*'}
+EOF
+echo Ok1:$?
+
+cat <<EOF
+${x#'*'}
+EOF
+echo Ok2:$?
More information about the busybox-cvs
mailing list