On Jun 3, 2020, Martin Liška <mli...@suse.cz> wrote: > On 6/3/20 5:58 AM, Alexandre Oliva wrote: >> Please let me know if you'd prefer me to take this PR over.
> Yes, please take a look. Here's what I've regstrapped on x86_64-linux-gnu. It makes both memcpy calls conditional, and reorders the length computation to match. I also ran outputs.exp with a memcpy wrapper in gcc.c to detect any calls with NULL pointers, and nothing else came up. Ok to install? [PR95456] avoid memcpy (_, NULL, 0) in gcc.c From: Alexandre Oliva <ol...@adacore.com> Some newly-added code in gcc.c might call memcpy with a NULL source pointer and zero-length inputs. Avoid such calls by rearranging the code a little. for gcc/ChangeLog PR driver/95456 * gcc.c (do_spec_1): Don't call memcpy (_, NULL, 0). --- gcc/gcc.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/gcc/gcc.c b/gcc/gcc.c index e2362175f4..c0eb3c1 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -6024,19 +6024,19 @@ do_spec_1 (const char *spec, int inswitch, const char *soft_matched_part) } temp_filename_length = dumpdir_length + suffix_length + 1; - if (!outbase_length) - temp_filename_length += basename_length; - else + if (outbase_length) temp_filename_length += outbase_length; + else + temp_filename_length += basename_length; tmp = (char *) alloca (temp_filename_length); if (dumpdir_length) memcpy (tmp, dumpdir, dumpdir_length); - if (!outbase_length) - memcpy (tmp + dumpdir_length, input_basename, - basename_length); - else + if (outbase_length) memcpy (tmp + dumpdir_length, outbase, outbase_length); + else if (basename_length) + memcpy (tmp + dumpdir_length, input_basename, + basename_length); memcpy (tmp + temp_filename_length - suffix_length - 1, suffix, suffix_length); if (adjusted_suffix) -- Alexandre Oliva, freedom fighter he/him https://FSFLA.org/blogs/lxo/ Free Software Evangelist Stallman was right, but he's left :( GNU Toolchain Engineer Live long and free, and prosper ethically