diff options
author | Martin Liska <mliska@suse.cz> | 2015-12-11 11:59:29 +0100 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2015-12-11 10:59:29 +0000 |
commit | 11b9b5a445074aaef7a8b8961dcfb62f79168777 (patch) | |
tree | c0bda674661a5edf5e061a135eba1ef5c6f68292 | |
parent | 9276b0f797b13924a5bc05d150cdb12efec515d6 (diff) | |
download | gcc-11b9b5a445074aaef7a8b8961dcfb62f79168777.zip gcc-11b9b5a445074aaef7a8b8961dcfb62f79168777.tar.gz gcc-11b9b5a445074aaef7a8b8961dcfb62f79168777.tar.bz2 |
re PR target/67484 (options-save.c sanitizer asan detects freed storage referenced heap-use-after-free)
Fix PR target/67484
Uros Bizjak <ubizjak@gmail.com>
PR target/67484
* config/i386/i386.c (ix86_valid_target_attribute_tree):
Use ggc_strdup to copy option_strings to opts->x_ix86_arch_string and
opts->x_ix86_tune_string.
From-SVN: r231556
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 5 |
2 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c150e00..de877d4 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2015-12-11 Martin Liska <mliska@suse.cz> + + Uros Bizjak <ubizjak@gmail.com> + + PR target/67484 + * config/i386/i386.c (ix86_valid_target_attribute_tree): + Use ggc_strdup to copy option_strings to opts->x_ix86_arch_string and + opts->x_ix86_tune_string. + 2015-12-11 Richard Biener <rguenther@suse.de> * lto-streamer.h (lto_simple_header_with_strings): Remove diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index e565c0b..cecea24 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -6152,7 +6152,7 @@ ix86_valid_target_attribute_tree (tree args, if (option_strings[IX86_FUNCTION_SPECIFIC_ARCH]) { opts->x_ix86_arch_string - = option_strings[IX86_FUNCTION_SPECIFIC_ARCH]; + = ggc_strdup (option_strings[IX86_FUNCTION_SPECIFIC_ARCH]); /* If arch= is set, clear all bits in x_ix86_isa_flags, except for ISA_64BIT, ABI_64, ABI_X32, and CODE16. */ @@ -6166,7 +6166,8 @@ ix86_valid_target_attribute_tree (tree args, opts->x_ix86_arch_string = NULL; if (option_strings[IX86_FUNCTION_SPECIFIC_TUNE]) - opts->x_ix86_tune_string = option_strings[IX86_FUNCTION_SPECIFIC_TUNE]; + opts->x_ix86_tune_string + = ggc_strdup (option_strings[IX86_FUNCTION_SPECIFIC_TUNE]); else if (orig_tune_defaulted) opts->x_ix86_tune_string = NULL; |