]> git.proxmox.com Git - rustc.git/blob - src/compiler-rt/test/asan/TestCases/Posix/waitid.cc
Imported Upstream version 1.6.0+dfsg1
[rustc.git] / src / compiler-rt / test / asan / TestCases / Posix / waitid.cc
1 // RUN: %clangxx_asan -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s
2 // RUN: %clangxx_asan -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s
3
4 #include <assert.h>
5 #include <sys/wait.h>
6 #include <unistd.h>
7 #include <signal.h>
8
9 int main(int argc, char **argv) {
10 pid_t pid = fork();
11 if (pid) { // parent
12 int x[3];
13 int *status = x + argc * 3;
14 int res;
15
16 siginfo_t *si = (siginfo_t*)(x + argc * 3);
17 res = waitid(P_ALL, 0, si, WEXITED | WNOHANG);
18 // CHECK: stack-buffer-overflow
19 // CHECK: {{WRITE of size .* at 0x.* thread T0}}
20 // CHECK: {{in .*waitid}}
21 // CHECK: {{in main .*waitid.cc:}}
22 // CHECK: is located in stack of thread T0 at offset
23 // CHECK: {{in main}}
24 return res != -1;
25 }
26 // child
27 return 0;
28 }