35 lines · cpp
1// RUN: %clangxx_asan -g %s -o %t2// RUN: not %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-FWRITE3// RUN: not %run %t 1 2>&1 | FileCheck %s --check-prefix=CHECK-FREAD4 5#include <stdio.h>6#include <stdlib.h>7 8int test_fread() {9 FILE *f = fopen("/dev/zero", "r");10 char buf[2];11 fread(buf, sizeof(buf), 2, f); // BOOM12 fclose(f);13 return 0;14}15 16int test_fwrite() {17 FILE *f = fopen("/dev/null", "w");18 char buf[2];19 fwrite(buf, sizeof(buf), 2, f); // BOOM20 return fclose(f);21}22 23int main(int argc, char *argv[]) {24 if (argc > 1)25 test_fread();26 else27 test_fwrite();28 return 0;29}30 31// CHECK-FREAD: {{.*ERROR: AddressSanitizer: stack-buffer-overflow}}32// CHECK-FREAD: #{{.*}} in {{(wrap_|__interceptor_)?}}fread33// CHECK-FWRITE: {{.*ERROR: AddressSanitizer: stack-buffer-overflow}}34// CHECK-FWRITE: #{{.*}} in {{(wrap_|__interceptor_)?}}fwrite35