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