186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// Check that without suppressions, we catch the issue. 286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// RUN: %clangxx_asan -O0 %s -o %t 386277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// RUN: not %run %t 2>&1 | FileCheck --check-prefix=CHECK-CRASH %s 486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines 586277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// RUN: echo "interceptor_via_fun:crash_function" > %t.supp 63d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar// RUN: %clangxx_asan -O0 %s -o %t && %env_asan_opts=suppressions='"%t.supp"' %run %t 2>&1 | FileCheck --check-prefix=CHECK-IGNORE %s 73d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar// RUN: %clangxx_asan -O3 %s -o %t && %env_asan_opts=suppressions='"%t.supp"' %run %t 2>&1 | FileCheck --check-prefix=CHECK-IGNORE %s 886277eb844c4983c81de62d7c050e92fe7155788Stephen Hines 93d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar// FIXME: Windows symbolizer needs work to make this pass. 103d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar// XFAIL: android,win32 1186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines 1286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines#include <stdio.h> 1386277eb844c4983c81de62d7c050e92fe7155788Stephen Hines#include <stdlib.h> 1486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines#include <string.h> 1586277eb844c4983c81de62d7c050e92fe7155788Stephen Hines 1686277eb844c4983c81de62d7c050e92fe7155788Stephen Hinesvoid crash_function() { 1786277eb844c4983c81de62d7c050e92fe7155788Stephen Hines char *a = (char *)malloc(6); 1886277eb844c4983c81de62d7c050e92fe7155788Stephen Hines free(a); 1986277eb844c4983c81de62d7c050e92fe7155788Stephen Hines size_t len = strlen(a); // BOOM 2086277eb844c4983c81de62d7c050e92fe7155788Stephen Hines fprintf(stderr, "strlen ignored, len = %zu\n", len); 2186277eb844c4983c81de62d7c050e92fe7155788Stephen Hines} 2286277eb844c4983c81de62d7c050e92fe7155788Stephen Hines 2386277eb844c4983c81de62d7c050e92fe7155788Stephen Hinesint main() { 2486277eb844c4983c81de62d7c050e92fe7155788Stephen Hines crash_function(); 2586277eb844c4983c81de62d7c050e92fe7155788Stephen Hines} 2686277eb844c4983c81de62d7c050e92fe7155788Stephen Hines 2786277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// CHECK-CRASH: AddressSanitizer: heap-use-after-free 2886277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// CHECK-CRASH-NOT: strlen ignored 2986277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// CHECK-IGNORE-NOT: AddressSanitizer: heap-use-after-free 3086277eb844c4983c81de62d7c050e92fe7155788Stephen Hines// CHECK-IGNORE: strlen ignored 31