Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 405418 Details for
Bug 300867
net-libs/webkit-gtk crash: make argument list is too long
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
1.patch
1.patch (text/plain), 3.98 KB, created by
Pacho Ramos
on 2015-06-20 14:09:20 UTC
(
hide
)
Description:
1.patch
Filename:
MIME Type:
Creator:
Pacho Ramos
Created:
2015-06-20 14:09:20 UTC
Size:
3.98 KB
patch
obsolete
>From 2086cc583c11cb919710c688a0f8e9c26731bd0f Mon Sep 17 00:00:00 2001 >From: Manoj Srivastava <srivasta@golden-gryphon.com> >Date: Sun, 4 May 2014 17:08:48 -0700 >Subject: [PATCH 09/11] [handle_excessive_command_length]: Patch to fix large > cmmand line > >When presented with a very very long command line (e.g. WebKit's linking >of libWebCore.la in current git), make fails to execute the command as >it doesn't split the command line to fit within the limits. > >This patch provides a POSIX specific fix. > >Signed-off-by: Manoj Srivastava <srivasta@golden-gryphon.com> >--- > configure.ac | 3 ++- > job.c | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- > 2 files changed, 52 insertions(+), 2 deletions(-) > >diff --git a/configure.ac b/configure.ac >index 7490b4d..404c7ae 100644 >--- a/configure.ac >+++ b/configure.ac >@@ -62,7 +62,8 @@ AC_HEADER_DIRENT > AC_HEADER_STAT > AC_HEADER_TIME > AC_CHECK_HEADERS([stdlib.h locale.h unistd.h limits.h fcntl.h string.h \ >- memory.h sys/param.h sys/resource.h sys/time.h sys/timeb.h]) >+ memory.h sys/param.h sys/resource.h sys/time.h sys/timeb.h \ >+ sys/user.h linux/binfmts.h]) > > AM_PROG_CC_C_O > AC_C_CONST >diff --git a/job.c b/job.c >index 7b061a6..63a6253 100644 >--- a/job.c >+++ b/job.c >@@ -27,6 +27,14 @@ this program. If not, see <http://www.gnu.org/licenses/>. */ > > #include <string.h> > >+#if defined (HAVE_LINUX_BINFMTS_H) && defined (HAVE_SYS_USER_H) >+#include <sys/user.h> >+#include <linux/binfmts.h> >+#endif >+#ifndef PAGE_SIZE >+# define PAGE_SIZE (sysconf(_SC_PAGESIZE)) >+#endif >+ > /* Default shell to use. */ > #ifdef WINDOWS32 > #include <windows.h> >@@ -3067,6 +3075,7 @@ construct_command_argv_internal (char *line, char **restp, char *shell, > #ifdef WINDOWS32 > char *command_ptr = NULL; /* used for batch_mode_shell mode */ > #endif >+ char *args_ptr; > > # ifdef __EMX__ /* is this necessary? */ > if (!unixy_shell && shellflags) >@@ -3232,8 +3241,17 @@ construct_command_argv_internal (char *line, char **restp, char *shell, > return new_argv; > } > >+#ifdef MAX_ARG_STRLEN >+ static char eval_line[] = "eval\\ \\\"set\\ x\\;\\ shift\\;\\ "; >+#define ARG_NUMBER_DIGITS 5 >+#define EVAL_LEN (sizeof(eval_line)-1 + shell_len + 4 \ >+ + (7 + ARG_NUMBER_DIGITS) * 2 * line_len / (MAX_ARG_STRLEN - 2)) >+#else >+#define EVAL_LEN 0 >+#endif >+ > new_line = xmalloc ((shell_len*2) + 1 + sflags_len + 1 >- + (line_len*2) + 1); >+ + (line_len*2) + 1 + EVAL_LEN); > ap = new_line; > /* Copy SHELL, escaping any characters special to the shell. If > we don't escape them, construct_command_argv_internal will >@@ -3253,6 +3271,30 @@ construct_command_argv_internal (char *line, char **restp, char *shell, > #ifdef WINDOWS32 > command_ptr = ap; > #endif >+ >+#if !defined (WINDOWS32) && defined (MAX_ARG_STRLEN) >+ if (unixy_shell && line_len > MAX_ARG_STRLEN) >+ { >+ unsigned j; >+ memcpy (ap, eval_line, sizeof (eval_line) - 1); >+ ap += sizeof (eval_line) - 1; >+ for (j = 1; j <= 2 * line_len / (MAX_ARG_STRLEN - 2); j++) >+ ap += sprintf (ap, "\\$\\{%u\\}", j); >+ *ap++ = '\\'; >+ *ap++ = '"'; >+ *ap++ = ' '; >+ /* Copy only the first word of SHELL to $0. */ >+ for (p = shell; *p != '\0'; ++p) >+ { >+ if (isspace ((unsigned char)*p)) >+ break; >+ *ap++ = *p; >+ } >+ *ap++ = ' '; >+ } >+#endif >+ args_ptr = ap; >+ > for (p = line; *p != '\0'; ++p) > { > if (restp != NULL && *p == '\n') >@@ -3300,6 +3342,13 @@ construct_command_argv_internal (char *line, char **restp, char *shell, > } > #endif > *ap++ = *p; >+#if !defined (WINDOWS32) && defined (MAX_ARG_STRLEN) >+ if (unixy_shell && line_len > MAX_ARG_STRLEN && (ap - args_ptr > MAX_ARG_STRLEN - 2)) >+ { >+ *ap++ = ' '; >+ args_ptr = ap; >+ } >+#endif > } > if (ap == new_line + shell_len + sflags_len + 2) > { >-- >2.0.0 >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 300867
:
216384
|
216392
|
258932
|
276923
|
276927
|
294715
|
294717
|
294787
|
296199
|
296201
|
296203
|
373368
|
373370
| 405418