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