12d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// RUN: %clangxx_asan -O0 %s -o %t && env ASAN_OPTIONS=strict_memcmp=0 %run %t 22d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// RUN: %clangxx_asan -O0 %s -o %t && env ASAN_OPTIONS=strict_memcmp=1 not %run %t 2>&1 | FileCheck %s 38bd5e74fa9d37a182088114918380e255e22e493Alexander Potapenko// Default to strict_memcmp=1. 42d1fdb26e458c4ddc04155c1d421bced3ba90cd0Stephen Hines// RUN: %clangxx_asan -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s 58bd5e74fa9d37a182088114918380e255e22e493Alexander Potapenko 68bd5e74fa9d37a182088114918380e255e22e493Alexander Potapenko#include <stdio.h> 78bd5e74fa9d37a182088114918380e255e22e493Alexander Potapenko#include <string.h> 88bd5e74fa9d37a182088114918380e255e22e493Alexander Potapenkoint main() { 98bd5e74fa9d37a182088114918380e255e22e493Alexander Potapenko char kFoo[] = "foo"; 108bd5e74fa9d37a182088114918380e255e22e493Alexander Potapenko char kFubar[] = "fubar"; 118bd5e74fa9d37a182088114918380e255e22e493Alexander Potapenko int res = memcmp(kFoo, kFubar, strlen(kFubar)); 128bd5e74fa9d37a182088114918380e255e22e493Alexander Potapenko printf("res: %d\n", res); 13f2366a95ae2b54569bf556c11580a14481f8700fAlexey Samsonov // CHECK: AddressSanitizer: stack-buffer-overflow 148bd5e74fa9d37a182088114918380e255e22e493Alexander Potapenko return 0; 158bd5e74fa9d37a182088114918380e255e22e493Alexander Potapenko} 16