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

klibc-bot for Herbert Xu herbert at gondor.apana.org.au
Sat Mar 28 14:49:01 PDT 2020

Commit-ID:  54da8ae3f40ab0181d9cf5e915c2a01b62205888
Gitweb:     http://git.kernel.org/?p=libs/klibc/klibc.git;a=commit;h=54da8ae3f40ab0181d9cf5e915c2a01b62205888
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: Sat, 28 Mar 2020 21:42:54 +0000

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

[ dash commit 9ee3343965950bad08e97f43c8c376b89a50b099 ]

The script

	cat <<- 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);
 			case CCTL:
-				if (eofmark == NULL || synstack->dblquote)
+				if ((!eofmark) | synstack->dblquote |
+				    synstack->varnest)
 					USTPUTC(CTLESC, out);
 				USTPUTC(c, out);

More information about the klibc mailing list