aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2014-07-15 11:06:07 +0000
committerMarek Polacek <mpolacek@gcc.gnu.org>2014-07-15 11:06:07 +0000
commit4d661eaacb8d418edecdeede04c731d60d0d9dfc (patch)
tree8d686d4549052439ee077ca3e113b4edebe62711
parent6ae506425148269dfdd5b2001804bdb461ec5706 (diff)
downloadgcc-4d661eaacb8d418edecdeede04c731d60d0d9dfc.zip
gcc-4d661eaacb8d418edecdeede04c731d60d0d9dfc.tar.gz
gcc-4d661eaacb8d418edecdeede04c731d60d0d9dfc.tar.bz2
c-ubsan.c (ubsan_instrument_bounds): Don't instrument if TYPE_MAX_VALUE is NULL.
* c-ubsan.c (ubsan_instrument_bounds): Don't instrument if TYPE_MAX_VALUE is NULL. * gcc.dg/ubsan/bounds-1.c: New test. From-SVN: r212552
-rw-r--r--gcc/c-family/ChangeLog5
-rw-r--r--gcc/c-family/c-ubsan.c2
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/ubsan/bounds-1.c10
4 files changed, 20 insertions, 1 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 2cd29fe..977de69 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+2014-07-15 Marek Polacek <polacek@redhat.com>
+
+ * c-ubsan.c (ubsan_instrument_bounds): Don't instrument if
+ TYPE_MAX_VALUE is NULL.
+
2014-07-14 Jakub Jelinek <jakub@redhat.com>
PR middle-end/61294
diff --git a/gcc/c-family/c-ubsan.c b/gcc/c-family/c-ubsan.c
index 3698580..ad5dd0b 100644
--- a/gcc/c-family/c-ubsan.c
+++ b/gcc/c-family/c-ubsan.c
@@ -265,7 +265,7 @@ ubsan_instrument_bounds (location_t loc, tree array, tree *index,
tree type = TREE_TYPE (array);
tree domain = TYPE_DOMAIN (type);
- if (domain == NULL_TREE)
+ if (domain == NULL_TREE || TYPE_MAX_VALUE (domain) == NULL_TREE)
return NULL_TREE;
tree bound = TYPE_MAX_VALUE (domain);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2f25963..8332a20 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2014-07-15 Marek Polacek <polacek@redhat.com>
+
+ * gcc.dg/ubsan/bounds-1.c: New test.
+
2014-06-15 Tobias Burnus <burnus@net-b.de>
* gfortran.dg/coarray_34.f90: New.
diff --git a/gcc/testsuite/gcc.dg/ubsan/bounds-1.c b/gcc/testsuite/gcc.dg/ubsan/bounds-1.c
new file mode 100644
index 0000000..6f3cd2d
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/ubsan/bounds-1.c
@@ -0,0 +1,10 @@
+/* { dg-do compile } */
+/* { dg-options "-fsanitize=bounds" } */
+
+struct T { int c; char d[]; } t = { 1, "abcdefg" };
+
+int
+baz (int i)
+{
+ return t.d[i];
+}