[git commit] ash: add a FIXME for bug 9246

Denys Vlasenko vda.linux at googlemail.com
Sat Sep 17 18:53:47 UTC 2016


commit: https://git.busybox.net/busybox/commit/?id=7bc3d39695728c6257a95bc2d75e80d3e2431c8b
branch: https://git.busybox.net/busybox/commit/?id=refs/heads/master

Signed-off-by: Denys Vlasenko <vda.linux at googlemail.com>
---
 shell/ash.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/shell/ash.c b/shell/ash.c
index 789a81c..790367b 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -11659,9 +11659,18 @@ parsebackq: {
 	str = NULL;
 	savelen = out - (char *)stackblock();
 	if (savelen > 0) {
+		/*
+		 * FIXME: this can allocate very large block on stack and SEGV.
+		 * Example:
+		 * echo "..<100kbytes>..`true` $(true) `true` ..."
+		 * alocates 100kb for every command subst. With about
+		 * a hundred command substitutions stack overflows.
+		 * With larger prepended string, SEGV happens sooner.
+		 */
 		str = alloca(savelen);
 		memcpy(str, stackblock(), savelen);
 	}
+
 	if (oldstyle) {
 		/* We must read until the closing backquote, giving special
 		 * treatment to some slashes, and then push the string and


More information about the busybox-cvs mailing list