PATCH: PR binutils/14526: c++filt is crashed on large files
H.J. Lu
hongjiu.lu@intel.com
Tue Aug 28 20:30:00 GMT 2012
Hi,
buildargv uses alloca to allocate buffer, whose size may exceed stack
limit. This patch replaces alloca with xmalloc/free. OK to install?
Thanks.
H.J.
---
PR binutils/14526
* argv.c (buildargv): Replace alloca with xmalloc/free.
diff --git a/libiberty/argv.c b/libiberty/argv.c
index ca53f91..4cef3bc 100644
--- a/libiberty/argv.c
+++ b/libiberty/argv.c
@@ -191,7 +191,7 @@ char **buildargv (const char *input)
if (input != NULL)
{
- copybuf = (char *) alloca (strlen (input) + 1);
+ copybuf = (char *) xmalloc (strlen (input) + 1);
/* Is a do{}while to always execute the loop once. Always return an
argv, even for null strings. See NOTES above, test case below. */
do
@@ -297,6 +297,8 @@ char **buildargv (const char *input)
consume_whitespace (&input);
}
while (*input != EOS);
+
+ free (copybuf);
}
return (argv);
}
More information about the Binutils
mailing list