From: chefmax Date: Fri, 20 Jun 2014 10:26:55 +0000 (+0000) Subject: 2014-06-18 Yury Gribov X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3c2f2de7a010f688fb694a550b57855f27a51157;p=thirdparty%2Fgcc.git 2014-06-18 Yury Gribov 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6b66a35f957b..f26115dad532 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-06-20 Yury Gribov + Max Ostapenko + + PR sanitizer/61530 + * asan.c (build_check_stmt): Add condition. + 2014-06-20 Martin Jambor PR ipa/61211 diff --git a/gcc/asan.c b/gcc/asan.c index 281a7956bbe6..4d87dad70114 100644 --- a/gcc/asan.c +++ b/gcc/asan.c @@ -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) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b64b33c5b78f..ffb5caf1ad08 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2014-06-20 Yury Gribov + Max Ostapenko + + PR sanitizer/61530 + * c-c++-common/asan/pr61530.c: New test. + 2014-06-16 Kyrylo Tkachov * 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 index 000000000000..e306a71be936 --- /dev/null +++ b/gcc/testsuite/c-c++-common/asan/pr61530.c @@ -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" } */