]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
2014-06-18 Yury Gribov <y.gribov@samsung.com>
authorchefmax <chefmax@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Jun 2014 10:26:55 +0000 (10:26 +0000)
committerchefmax <chefmax@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 20 Jun 2014 10:26:55 +0000 (10:26 +0000)
gcc/
PR sanitizer/61530
* asan.c (build_check_stmt): Add condition.

gcc/testsuite/
* c-c++-common/asan/pr61530.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@211846 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/asan.c
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/asan/pr61530.c [new file with mode: 0644]

index 6b66a35f957b88daa0335b4d54f946fd650869b4..f26115dad532d8b85dfaa4eeb23caa3134ab51a9 100644 (file)
@@ -1,3 +1,9 @@
+2014-06-20  Yury Gribov  <y.gribov@samsung.com>
+           Max Ostapenko  <m.ostapenko@partner.samsung.com>
+
+       PR sanitizer/61530
+       * asan.c (build_check_stmt): Add condition.
+
 2014-06-20  Martin Jambor  <mjambor@suse.cz>
 
        PR ipa/61211
index 281a7956bbe64e1d11763922683074f75bf861d8..4d87dad701144d7de68975dfb9a4de39686cb274 100644 (file)
@@ -1654,6 +1654,7 @@ build_check_stmt (location_t location, tree base, tree len,
   if (size_in_bytes > 1)
     {
       if ((size_in_bytes & (size_in_bytes - 1)) != 0
+         || !is_scalar_access
          || size_in_bytes > 16)
        size_in_bytes = -1;
       else if (align && align < size_in_bytes * BITS_PER_UNIT)
index b64b33c5b78f37279a3a3479a544fc951df06fce..ffb5caf1ad0897bddf9f17659bb52de6c0e62ae2 100644 (file)
@@ -1,3 +1,9 @@
+2014-06-20  Yury Gribov  <y.gribov@samsung.com>
+           Max Ostapenko  <m.ostapenko@partner.samsung.com>
+
+       PR sanitizer/61530
+       * c-c++-common/asan/pr61530.c: New test.
+
 2014-06-16  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
 
        * gcc.target/aarch64/simd/vqdmulhh_lane_s16.c: New test.
diff --git a/gcc/testsuite/c-c++-common/asan/pr61530.c b/gcc/testsuite/c-c++-common/asan/pr61530.c
new file mode 100644 (file)
index 0000000..e306a71
--- /dev/null
@@ -0,0 +1,17 @@
+/* { dg-do run } */
+/* { dg-shouldfail "asan" } */
+
+__attribute__((noinline,noclone)) void
+foo (char *a, char *b) {
+  a[0] = b[0] = 0;
+  __builtin_memcpy(a, b, 4);
+}
+
+int
+main () {
+  char a, b;
+  foo (&a, &b);
+  return 0;
+}
+
+/* { dg-output "ERROR: AddressSanitizer: stack-buffer-overflow" } */