aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--main/make/APKBUILD6
-rw-r--r--main/make/use-malloc.patch38
2 files changed, 42 insertions, 2 deletions
diff --git a/main/make/APKBUILD b/main/make/APKBUILD
index aa11050de2..9f4f452fb4 100644
--- a/main/make/APKBUILD
+++ b/main/make/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=make
pkgver=3.82
-pkgrel=3
+pkgrel=4
pkgdesc="GNU make utility to maintain groups of programs"
url="http://www.gnu.org/software/make"
arch="all"
@@ -15,6 +15,7 @@ source="ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz
make-3.82-jobserver.patch
make-3.82-expensive_glob.patch
make-3.82-parallel-remake.patch
+ use-malloc.patch
"
_builddir="$srcdir"/$pkgname-$pkgver
@@ -47,4 +48,5 @@ md5sums="7f7c000e3b30c6840f2e9cf86b254fac make-3.82.tar.gz
0436e740edbc81cf27fd598241b8dcf0 make-3.82-memory-corruption.patch
923a06973f4bbc9f27c2ca88a6940d45 make-3.82-jobserver.patch
f2ed48ea701e8ab6e5b870a3d125b71a make-3.82-expensive_glob.patch
-89f8032d2f314eb6338739f024d8ecec make-3.82-parallel-remake.patch"
+89f8032d2f314eb6338739f024d8ecec make-3.82-parallel-remake.patch
+44469128d5044e14ac48b3b991889ceb use-malloc.patch"
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 */
+