]>
Commit | Line | Data |
---|---|---|
5bcae85e | 1 | // RUN: %clangxx_asan %s -o %t |
7cac9316 XL |
2 | // RUN: not %run %t 2>&1 | FileCheck %s --check-prefix=A1 |
3 | // RUN: not %run %t 1 2>&1 | FileCheck %s --check-prefix=A2 | |
5bcae85e SL |
4 | // RUN: %env_asan_opts=intercept_memmem=0 %run %t |
5 | ||
6 | #include <string.h> | |
7 | int main(int argc, char **argv) { | |
8 | char a1[] = {1, 2, 3, 4, 5, 6, 7, 8}; | |
9 | char a2[] = {3, 4, 5}; | |
10 | void *res; | |
11 | if (argc == 1) | |
12 | res = memmem(a1, sizeof(a1) + 1, a2, sizeof(a2)); // BOOM | |
13 | else | |
14 | res = memmem(a1, sizeof(a1), a2, sizeof(a2) + 1); // BOOM | |
7cac9316 XL |
15 | // A1: AddressSanitizer: stack-buffer-overflow |
16 | // A1: {{#0.*memmem}} | |
17 | // A1-NEXT: {{#1.*main}} | |
5bcae85e | 18 | // A1: 'a1' <== Memory access at offset |
7cac9316 XL |
19 | // |
20 | // A2: AddressSanitizer: stack-buffer-overflow | |
21 | // A2: {{#0.*memmem}} | |
5bcae85e SL |
22 | // A2: 'a2' <== Memory access at offset |
23 | return res == NULL; | |
24 | } |