[klibc] [klibc:update-dash] parser: Fix single-quoted patterns in here-documents

klibc-bot for Herbert Xu herbert at gondor.apana.org.au
Thu Jan 24 19:15:52 PST 2019


Commit-ID:  1b256320b2da39c93e8e891e4a0b473488b68a3a
Gitweb:     http://git.kernel.org/?p=libs/klibc/klibc.git;a=commit;h=1b256320b2da39c93e8e891e4a0b473488b68a3a
Author:     Herbert Xu <herbert at gondor.apana.org.au>
AuthorDate: Fri, 9 Mar 2018 23:07:53 +0800
Committer:  Ben Hutchings <ben at decadent.org.uk>
CommitDate: Fri, 25 Jan 2019 02:57:21 +0000

[klibc] 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: Ben Hutchings <ben at decadent.org.uk>

---
 usr/dash/parser.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/usr/dash/parser.c b/usr/dash/parser.c
index c28363ca..cd980941 100644
--- a/usr/dash/parser.c
+++ b/usr/dash/parser.c
@@ -934,7 +934,8 @@ readtoken1(int firstc, char const *syntax, char *eofmark, int striptabs)
 				USTPUTC(c, out);
 				break;
 			case CCTL:
-				if (eofmark == NULL || synstack->dblquote)
+				if ((!eofmark) | synstack->dblquote |
+				    synstack->varnest)
 					USTPUTC(CTLESC, out);
 				USTPUTC(c, out);
 				break;


More information about the klibc mailing list