1 // RUN: %clangxx_asan -O0 %s -o %t && %run %t 2 // RUN: %clangxx_asan -O0 %s -DPOSITIVE -o %t && not %run %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 main()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