17c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// Check that without suppressions, we catch the issue. 27c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// RUN: %clangxx_asan -O0 %s -o %t 37c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// RUN: not %run %t 2>&1 | FileCheck --check-prefix=CHECK-CRASH %s 47c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 57c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// If the executable is started from a different location, we should still 67c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// find the suppression file located relative to the location of the executable. 77c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// RUN: rm -rf %T/suppressions-exec-relative-location 87c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// RUN: mkdir -p %T/suppressions-exec-relative-location 97c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// RUN: %clangxx_asan -O0 %s -o %T/suppressions-exec-relative-location/exec 107c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// RUN: echo "interceptor_via_fun:crash_function" > \ 117c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// RUN: %T/suppressions-exec-relative-location/supp.txt 123d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar// RUN: %env_asan_opts=suppressions='"supp.txt"' \ 137c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// RUN: %run %T/suppressions-exec-relative-location/exec 2>&1 | \ 147c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// RUN: FileCheck --check-prefix=CHECK-IGNORE %s 157c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// RUN: rm -rf %T/suppressions-exec-relative-location 167c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 177c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// If the wrong absolute path is given, we don't try to construct 187c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// a relative path with it. 193d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar// RUN: %env_asan_opts=suppressions='"/absolute/path"' not %run %t 2>&1 | \ 207c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// RUN: FileCheck --check-prefix=CHECK-WRONG-FILE-NAME %s 217c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 227c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// Test that we reject directory as filename. 233d763c0d3700e73b3aead8e65e04ec28efc56138Pirama Arumuga Nainar// RUN: %env_asan_opts=suppressions='"folder/only/"' not %run %t 2>&1 | \ 247c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// RUN: FileCheck --check-prefix=CHECK-WRONG-FILE-NAME %s 257c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 267c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// XFAIL: android 277c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// XFAIL: win32 287c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 297c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar#include <stdio.h> 307c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar#include <stdlib.h> 317c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar#include <string.h> 327c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 337c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainarvoid crash_function() { 347c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar char *a = (char *)malloc(6); 357c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar free(a); 367c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar size_t len = strlen(a); // BOOM 377c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar fprintf(stderr, "strlen ignored, len = %zu\n", len); 387c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar} 397c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 407c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainarint main() { 417c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar crash_function(); 427c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar} 437c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar 447c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// CHECK-CRASH: AddressSanitizer: heap-use-after-free 457c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// CHECK-IGNORE-NOT: AddressSanitizer: heap-buffer-overflow 467c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// CHECK-IGNORE: ignored 477c9150579ed0278492f51cc8434b1d63a44b9bd1Pirama Arumuga Nainar// CHECK-WRONG-FILE-NAME: failed to read suppressions file 48