diff options
author | Alexandre Oliva <oliva@adacore.com> | 2020-06-05 22:31:19 -0300 |
---|---|---|
committer | Alexandre Oliva <oliva@gnu.org> | 2020-06-05 22:31:19 -0300 |
commit | 2e6a6644db0ef0f369df4e5b1b337122d84c1a39 (patch) | |
tree | 8eb06e227b6734b1986fd29fa551ad62a87ffb42 /gcc/gcc.c | |
parent | 1a59f3db4a4174d02256be51e9e08e9c68478a41 (diff) | |
download | gcc-2e6a6644db0ef0f369df4e5b1b337122d84c1a39.zip gcc-2e6a6644db0ef0f369df4e5b1b337122d84c1a39.tar.gz gcc-2e6a6644db0ef0f369df4e5b1b337122d84c1a39.tar.bz2 |
[PR95456] avoid memcpy (_, NULL, 0) in gcc.c
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).
Diffstat (limited to 'gcc/gcc.c')
-rw-r--r-- | gcc/gcc.c | 14 |
1 files changed, 7 insertions, 7 deletions
@@ -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) |