summary refs log tree commit diff
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2011-03-10 20:59:46 +0800
committerHerbert Xu <herbert@gondor.apana.org.au>2011-03-10 20:59:46 +0800
commit54413164e587dd2dc5d7bce0bd3fab61d7ba758c (patch)
treeeee570d39af410e50f18528dbdc69f8f245e4d6d
parent[SHELL] Port to AIX (diff)
downloaddash-54413164e587dd2dc5d7bce0bd3fab61d7ba758c.tar.gz
dash-54413164e587dd2dc5d7bce0bd3fab61d7ba758c.zip
[BUILTIN] Fix CTLESC clobbering by read(1)
The changeset 55c46b7286f5d9f2d8291158203e2b61d2494420

	[BUILTIN] Honor tab as IFS whitespace when splitting fields in readcmd

uses CTLESC to prevent field splitting in read(1).  However,
it did not escape CTLESC itself in the input stream.  This patch
adds the necessary CTLESC characters so that CTLESC isn't corrupted.

Reported-by: Alexey Gladkov <gladkov.alexey@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
-rw-r--r--ChangeLog4
-rw-r--r--src/miscbltin.c2
2 files changed, 5 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 173f057..6d02fa9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2011-03-10  Herbert Xu <herbert@gondor.apana.org.au>
+
+	* Fix CTLESC clobbering by read(1).
+
 2011-03-10  Brian Koropoff <bkoropoff@gmail.com>
 
 	* Port to AIX.
diff --git a/src/miscbltin.c b/src/miscbltin.c
index 653c92f..800cbbb 100644
--- a/src/miscbltin.c
+++ b/src/miscbltin.c
@@ -178,7 +178,7 @@ readcmd(int argc, char **argv)
 		}
 		if (c == '\0')
 			continue;
-		if (backslash) {
+		if (backslash || c == CTLESC) {
 			if (c == '\n')
 				goto resetbs;
 			STPUTC(CTLESC, p);