brintos

brintos / llvm-project-archived public Read only

0
0
Text · 788 B · 96b91f9 Raw
31 lines · cpp
1// RUN: %clangxx_asan -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s2// RUN: %clangxx_asan -O3 %s -o %t && not %run %t 2>&1 | FileCheck %s3 4// UNSUPPORTED: darwin, aarch645 6#include <assert.h>7#include <sys/wait.h>8#include <unistd.h>9#include <signal.h>10 11int main(int argc, char **argv) {12  pid_t pid = fork();13  if (pid) { // parent14    int x[3];15    int *status = x + argc * 3;16    int res;17 18    siginfo_t *si = (siginfo_t*)(x + argc * 3);19    res = waitid(P_ALL, 0, si, WEXITED | WNOHANG);20    // CHECK: stack-buffer-overflow21    // CHECK: {{WRITE of size .* at 0x.* thread T0}}22    // CHECK: {{in .*waitid}}23    // CHECK: {{in main .*waitid.cpp:}}24    // CHECK: is located in stack of thread T0 at offset25    // CHECK: {{in main}}26    return res != -1;27  }28  // child29  return 0;30}31