* fold-const.c (c_getstr): Clamp STRING_LENGTH to STRING_SIZE.
authorBernd Edlinger <bernd.edlinger@hotmail.de>
Thu, 13 Sep 2018 22:00:56 +0000 (22:00 +0000)
committerJeff Law <law@gcc.gnu.org>
Thu, 13 Sep 2018 22:00:56 +0000 (16:00 -0600)
From-SVN: r264293

gcc/ChangeLog
gcc/fold-const.c

index 7dfcd97f9016c4d299025c8d534eff7fa14e90b8..dfa39f0f0ca341a990bdadada8b58482d3ad268f 100644 (file)
@@ -1,5 +1,7 @@
 2018-09-13  Bernd Edlinger  <bernd.edlinger@hotmail.de>
 
+       * 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.
index 71c18eb1e8226da428015d6318dc1586344cae6e..9fc7fc5a931814f966062203ea551a81627d3e6e 100644 (file)
@@ -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;