| // RUN: %clangxx_asan -m64 -O0 %s -o %t && ASAN_OPTIONS=strict_memcmp=0 %t 2>&1 | %symbolize | FileCheck %s --check-prefix=CHECK-nonstrict |
| // RUN: %clangxx_asan -m64 -O0 %s -o %t && ASAN_OPTIONS=strict_memcmp=1 %t 2>&1 | %symbolize | FileCheck %s --check-prefix=CHECK-strict |
| // Default to strict_memcmp=1. |
| // RUN: %clangxx_asan -m64 -O0 %s -o %t && %t 2>&1 | %symbolize | FileCheck %s --check-prefix=CHECK-strict |
| |
| #include <stdio.h> |
| #include <string.h> |
| int main() { |
| char kFoo[] = "foo"; |
| char kFubar[] = "fubar"; |
| int res = memcmp(kFoo, kFubar, strlen(kFubar)); |
| printf("res: %d\n", res); |
| // CHECK-nonstrict: {{res: -1}} |
| // CHECK-strict: AddressSanitizer: stack-buffer-overflow |
| return 0; |
| } |