]> git.proxmox.com Git - rustc.git/blob - src/compiler-rt/test/asan/TestCases/vla_chrome_testcase.cc
New upstream version 1.19.0+dfsg3
[rustc.git] / src / compiler-rt / test / asan / TestCases / vla_chrome_testcase.cc
1 // RUN: %clangxx_asan -O0 -mllvm -asan-instrument-dynamic-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 }