diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2012-05-11 12:53:41 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2012-05-11 15:04:40 +0000 |
commit | b52b755ab9f894eef260967918dc7343d6d19e73 (patch) | |
tree | 0cdafe5a95f75120b0b360d3847256d9e6999635 /main/make/use-malloc.patch | |
parent | a52c9d823621e469d6052aac1f4aab74cce1fe10 (diff) | |
download | aports-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.patch | 38 |
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 000000000..8e3284c03 --- /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 */ + |