aboutsummaryrefslogtreecommitdiffstats
path: root/main/make/use-malloc.patch
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2012-05-11 12:53:41 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2012-05-11 15:04:40 +0000
commitb52b755ab9f894eef260967918dc7343d6d19e73 (patch)
tree0cdafe5a95f75120b0b360d3847256d9e6999635 /main/make/use-malloc.patch
parenta52c9d823621e469d6052aac1f4aab74cce1fe10 (diff)
downloadaports-b52b755ab9f894eef260967918dc7343d6d19e73.tar.bz2
aports-b52b755ab9f894eef260967918dc7343d6d19e73.tar.xz
main/make: fix stack overflow when long command lines
Fixes building webkit https://savannah.gnu.org/bugs/index.php?36451
Diffstat (limited to 'main/make/use-malloc.patch')
-rw-r--r--main/make/use-malloc.patch38
1 files changed, 38 insertions, 0 deletions
diff --git a/main/make/use-malloc.patch b/main/make/use-malloc.patch
new file mode 100644
index 0000000000..8e3284c03e
--- /dev/null
+++ b/main/make/use-malloc.patch
@@ -0,0 +1,38 @@
+Use malloc when construction the command argv instead of stack space.
+This fixes overflowing the stack when building webkit on uclibc based
+systems.
+
+https://savannah.gnu.org/bugs/index.php?36451
+
+--- ./job.c.orig
++++ ./job.c
+@@ -2865,7 +2865,7 @@
+ return new_argv;
+ }
+
+- new_line = alloca (shell_len + 1 + sflags_len + 1
++ new_line = xmalloc (shell_len + 1 + sflags_len + 1
+ + (line_len*2) + 1);
+ ap = new_line;
+ memcpy (ap, shell, shell_len);
+@@ -2923,9 +2923,11 @@
+ #endif
+ *ap++ = *p;
+ }
+- if (ap == new_line + shell_len + sflags_len + 2)
++ if (ap == new_line + shell_len + sflags_len + 2) {
+ /* Line was empty. */
++ free (new_line);
+ return 0;
++ }
+ *ap = '\0';
+
+ #ifdef WINDOWS32
+@@ -3065,6 +3067,7 @@
+ fatal (NILF, _("%s (line %d) Bad shell context (!unixy && !batch_mode_shell)\n"),
+ __FILE__, __LINE__);
+ #endif
++ free (new_line);
+ }
+ #endif /* ! AMIGA */
+