summary refs log tree commit diff
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2009-08-31 20:15:04 +1000
committerHerbert Xu <herbert@gondor.apana.org.au>2009-08-31 20:15:04 +1000
commitcdb7c72699056856ac123d1ba4ab0e8595edbeb9 (patch)
tree8c647123ecc64543556dd8c6cfd406ba9a535650
parent[EVAL] Revert SKIPEVAL into EXEXIT (diff)
downloaddash-cdb7c72699056856ac123d1ba4ab0e8595edbeb9.tar.gz
dash-cdb7c72699056856ac123d1ba4ab0e8595edbeb9.zip
[BUILTIN] Fix NUL termination in readcmd
Commit 55c46b7286f5d9f2d8291158203e2b61d2494420 ([BUILTIN] Honor
tab as IFS whitespace when splitting fields in readcmd) introduced
a bug where sometimes garbage would follow the last field preceding
the end-of-line.  This was caused by an off-by-one error in the
string length calculation.

This patch fixes the bug.

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 9d397e4..13c9010 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2009-08-31  Herbert Xu <herbert@gondor.apana.org.au>
+
+	* Fix NUL termination in readcmd.
+
 2009-08-11  Herbert Xu <herbert@gondor.apana.org.au>
 
 	* Pass EV_TESTED into evalcmd.
diff --git a/src/miscbltin.c b/src/miscbltin.c
index cca0f6c..be746b2 100644
--- a/src/miscbltin.c
+++ b/src/miscbltin.c
@@ -182,7 +182,7 @@ resetbs:
 		backslash = 0;
 	}
 	STACKSTRNUL(p);
-	readcmd_handle_line(stackblock(), ap, p - (char *)stackblock());
+	readcmd_handle_line(stackblock(), ap, p + 1 - (char *)stackblock());
 	return status;
 }