| // { dg-do run } |
| // { dg-shouldfail "asan" } |
| |
| int *bar (int *x, int *y) { return y; } |
| |
| int foo (void) |
| { |
| char *p; |
| { |
| char a = 0; |
| p = &a; |
| } |
| |
| if (*p) |
| return 1; |
| else |
| return 0; |
| } |
| |
| int |
| main (void) |
| { |
| char *ptr; |
| { |
| char my_char[9]; |
| ptr = &my_char[0]; |
| } |
| |
| int a[16]; |
| int *p, *q = a; |
| { |
| int b[16]; |
| p = bar (a, b); |
| } |
| bar (a, q); |
| { |
| int c[16]; |
| q = bar (a, c); |
| } |
| int v = *bar (a, q); |
| return v; |
| } |
| |
| |
| // { dg-output "ERROR: AddressSanitizer: stack-use-after-scope on address.*(\n|\r\n|\r)" } |
| // { dg-output "READ of size 4 at.*" } |
| // { dg-output ".*'c' \\(line 37\\) <== Memory access at offset \[0-9\]* is inside this variable.*" } |