aboutsummaryrefslogtreecommitdiff
path: root/gcc/gcc.c
diff options
context:
space:
mode:
authorAlexandre Oliva <oliva@adacore.com>2020-06-05 22:31:19 -0300
committerAlexandre Oliva <oliva@gnu.org>2020-06-05 22:31:19 -0300
commit2e6a6644db0ef0f369df4e5b1b337122d84c1a39 (patch)
tree8eb06e227b6734b1986fd29fa551ad62a87ffb42 /gcc/gcc.c
parent1a59f3db4a4174d02256be51e9e08e9c68478a41 (diff)
downloadgcc-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.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/gcc/gcc.c b/gcc/gcc.c
index e236217..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)