brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · b3cd3a3 Raw
44 lines · cpp
1// UNSUPPORTED: system-windows2 3// RUN: mkdir -p %t.dir && cd %t.dir4// RUN: %clangxx_asan -O0 -DSHARED_LIB %s %fPIC -shared -o %dynamiclib %ld_flags_rpath_so5// RUN: %clangxx_asan -O0 %s -o %t.dir/exe %ld_flags_rpath_exe6 7// Check that without suppressions, we catch the issue.8// RUN: not %run %t.dir/exe 2>&1 | FileCheck --check-prefix=CHECK-CRASH %s9 10// RUN: echo "interceptor_via_lib:"%xdynamiclib_filename > %t.supp11// RUN: %env_asan_opts=suppressions='"%t.supp"' %run %t.dir/exe 2>&1 | FileCheck --check-prefix=CHECK-IGNORE %s12 13// FIXME: Upload suppressions to device.14// XFAIL: android15 16#include <stdio.h>17#include <stdlib.h>18#include <string.h>19 20#if !defined(SHARED_LIB)21 22void crash_function();23 24int main(int argc, char *argv[]) {25  crash_function();26  return 0;27}28 29#else // SHARED_LIB30 31void crash_function() {32  char *a = (char *)malloc(6);33  free(a);34  size_t len = strlen(a); // BOOM35  fprintf(stderr, "strlen ignored, %zu\n", len);36}37 38#endif // SHARED_LIB39 40// CHECK-CRASH: AddressSanitizer: heap-use-after-free41// CHECK-CRASH-NOT: strlen ignored42// CHECK-IGNORE-NOT: AddressSanitizer: heap-use-after-free43// CHECK-IGNORE: strlen ignored44