1// RUN: %clangxx_asan -O0 %s -o %t && %t 2// RUN: %clangxx_asan -O0 %s -DPOSITIVE -o %t && not %t 2>&1 | FileCheck %s 3 4// Test the readv() interceptor. 5 6#include <assert.h> 7#include <stdio.h> 8#include <stdlib.h> 9#include <unistd.h> 10#include <fcntl.h> 11#include <sys/uio.h> 12#include <time.h> 13 14int main() { 15 char buf[2011]; 16 struct iovec iov[2]; 17#ifdef POSITIVE 18 char * volatile buf_ = buf; 19 iov[0].iov_base = buf_ - 1; 20#else 21 iov[0].iov_base = buf + 1; 22#endif 23 iov[0].iov_len = 5; 24 iov[1].iov_base = buf + 10; 25 iov[1].iov_len = 2000; 26 int fd = open("/etc/hosts", O_RDONLY); 27 assert(fd > 0); 28 readv(fd, iov, 2); 29 // CHECK: WRITE of size 5 at 30 close(fd); 31 return 0; 32} 33