Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 216614 Details for
Bug 301116
sys-devel/make - problematic commandline handling for very long commands
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
[patch]
make-commandline-limit.patch
make.patch (text/plain), 3.20 KB, created by
Priit Laes (IRC: plaes)
on 2010-01-15 16:56:08 UTC
(
hide
)
Description:
make-commandline-limit.patch
Filename:
MIME Type:
Creator:
Priit Laes (IRC: plaes)
Created:
2010-01-15 16:56:08 UTC
Size:
3.20 KB
patch
obsolete
>2009-07-29 Ralf Wildenhues <Ralf.Wildenhues <at> gmx.de> > > * configure.in: Check for sys/user.h and linux/binfmts.h > headers. > * job.c: Include them if available. > (construct_command_argv_internal): When constructing the command > line with 'sh -c', use multiple arguments together with eval > expansion to evade the Linux per-argument length limit > MAX_ARG_STRLEN if it is defined. > Problem reported against Automake by Xan Lopez <xan <at> gnome.org>. > >Index: configure.in >=================================================================== >RCS file: /cvsroot/make/make/configure.in,v >retrieving revision 1.150 >diff -u -r1.150 configure.in >--- configure.in 4 Jun 2009 06:30:27 -0000 1.150 >+++ configure.in 29 Jul 2009 19:08:55 -0000 >@@ -64,7 +64,8 @@ > 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) > > # Set a flag if we have an ANSI C compiler > if test "$ac_cv_prog_cc_stdc" != no; then >--- job.c.orig 2010-01-15 18:36:53.000000000 +0200 >+++ job.c 2010-01-15 18:41:09.000000000 +0200 >@@ -29,6 +29,11 @@ > > #include <string.h> > >+#if defined (HAVE_LINUX_BINFMTS_H) && defined (HAVE_SYS_USER_H) >+#include <sys/user.h> >+#include <linux/binfmts.h> >+#endif >+ > /* Default shell to use. */ > #ifdef WINDOWS32 > #include <windows.h> >@@ -2697,9 +2702,19 @@ > #endif > unsigned int line_len = strlen (line); > >+#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 > char *new_line = (char *) alloca (shell_len + (sizeof (minus_c) - 1) >- + (line_len * 2) + 1); >+ + (line_len*2) + 1 + EVAL_LEN); >+ > char *command_ptr = NULL; /* used for batch_mode_shell mode */ >+ char *args_ptr; > > # ifdef __EMX__ /* is this necessary? */ > if (!unixy_shell) >@@ -2712,6 +2727,30 @@ > bcopy (minus_c, ap, sizeof (minus_c) - 1); > ap += sizeof (minus_c) - 1; > command_ptr = ap; >+ >+#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') >@@ -2760,6 +2799,14 @@ > } > #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 + sizeof (minus_c) - 1) > /* Line was empty. */
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 301116
: 216614