From 84b5706abb8f5dff634e588071ab4fef080cd05e Mon Sep 17 00:00:00 2001 From: Bernd Edlinger Date: Thu, 13 Sep 2018 22:00:56 +0000 Subject: [PATCH] * fold-const.c (c_getstr): Clamp STRING_LENGTH to STRING_SIZE. From-SVN: r264293 --- gcc/ChangeLog | 2 ++ gcc/fold-const.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7dfcd97f901..dfa39f0f0ca 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,7 @@ 2018-09-13 Bernd Edlinger + * fold-const.c (c_getstr): Clamp STRING_LENGTH to STRING_SIZE. + * varasm.c (compare_constant): Compare type size of STRING_CSTs. (get_constant_size): Don't make STRING_CSTs larger than they are. (check_string_literal): New check function for STRING_CSTs. diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 71c18eb1e82..9fc7fc5a931 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -14611,6 +14611,10 @@ c_getstr (tree src, unsigned HOST_WIDE_INT *strlen /* = NULL */, const char *string = TREE_STRING_POINTER (src); + /* Ideally this would turn into a gcc_checking_assert over time. */ + if (string_length > string_size) + string_length = string_size; + if (string_length == 0 || offset >= string_size) return NULL; -- 2.30.2