Home | History | Annotate | Download | only in TestCases
      1 // RUN: %clangxx_asan -O0 -mllvm -asan-instrument-allocas %s -o %t
      2 // RUN: not %run %t 2>&1 | FileCheck %s
      3 //
      4 
      5 // This is reduced testcase based on Chromium code.
      6 // See http://reviews.llvm.org/D6055?vs=on&id=15616&whitespace=ignore-all#toc.
      7 
      8 #include <stdint.h>
      9 #include <assert.h>
     10 
     11 int a = 7;
     12 int b;
     13 int c;
     14 int *p;
     15 
     16 __attribute__((noinline)) void fn3(int *first, int second) {
     17 }
     18 
     19 int main() {
     20   int d = b && c;
     21   int e[a]; // NOLINT
     22   assert(!(reinterpret_cast<uintptr_t>(e) & 31L));
     23   int f;
     24   if (d)
     25     fn3(&f, sizeof 0 * (&c - e));
     26   e[a] = 0;
     27 // CHECK: ERROR: AddressSanitizer: dynamic-stack-buffer-overflow on address [[ADDR:0x[0-9a-f]+]]
     28 // CHECK: WRITE of size 4 at [[ADDR]] thread T0
     29   return 0;
     30 }
     31