1f2366a95ae2b54569bf556c11580a14481f8700fAlexey Samsonov// RUN: %clangxx_asan -O0 %s -o %t && not %t 2>&1 | FileCheck %s
29c92748b8fa3b833924138a6ae1e653972c9de3bAlexey Samsonov
39c92748b8fa3b833924138a6ae1e653972c9de3bAlexey Samsonov#include <string.h>
49c92748b8fa3b833924138a6ae1e653972c9de3bAlexey Samsonov
59c92748b8fa3b833924138a6ae1e653972c9de3bAlexey Samsonovnamespace XXX {
69c92748b8fa3b833924138a6ae1e653972c9de3bAlexey Samsonovstruct YYY {
79c92748b8fa3b833924138a6ae1e653972c9de3bAlexey Samsonov  static int ZZZ(int x) {
89c92748b8fa3b833924138a6ae1e653972c9de3bAlexey Samsonov    char array[10];
99c92748b8fa3b833924138a6ae1e653972c9de3bAlexey Samsonov    memset(array, 0, 10);
109c92748b8fa3b833924138a6ae1e653972c9de3bAlexey Samsonov    return array[x];  // BOOOM
1150f3daa00d3da0a80c8798a3e977705e96ec106fKostya Serebryany    // CHECK: ERROR: AddressSanitizer: stack-buffer-overflow
1250f3daa00d3da0a80c8798a3e977705e96ec106fKostya Serebryany    // CHECK: READ of size 1 at
1350f3daa00d3da0a80c8798a3e977705e96ec106fKostya Serebryany    // CHECK: is located in stack of thread T0 at offset
1450f3daa00d3da0a80c8798a3e977705e96ec106fKostya Serebryany    // CHECK: XXX::YYY::ZZZ
159c92748b8fa3b833924138a6ae1e653972c9de3bAlexey Samsonov  }
169c92748b8fa3b833924138a6ae1e653972c9de3bAlexey Samsonov};
17ba5e99668e3030cc5bab357a04271a1bdbac209cAlexey Samsonov}  // namespace XXX
189c92748b8fa3b833924138a6ae1e653972c9de3bAlexey Samsonov
199c92748b8fa3b833924138a6ae1e653972c9de3bAlexey Samsonovint main(int argc, char **argv) {
209c92748b8fa3b833924138a6ae1e653972c9de3bAlexey Samsonov  int res = XXX::YYY::ZZZ(argc + 10);
219c92748b8fa3b833924138a6ae1e653972c9de3bAlexey Samsonov  return res;
229c92748b8fa3b833924138a6ae1e653972c9de3bAlexey Samsonov}
23