1*673dc3d4SNico Weber // RUN: %clangxx_asan -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s 2*673dc3d4SNico Weber 3*673dc3d4SNico Weber #include <string.h> 4*673dc3d4SNico Weber 5*673dc3d4SNico Weber namespace XXX { 6*673dc3d4SNico Weber struct YYY { ZZZXXX::YYY7*673dc3d4SNico Weber static int ZZZ(int x) { 8*673dc3d4SNico Weber char array[10]; 9*673dc3d4SNico Weber memset(array, 0, 10); 10*673dc3d4SNico Weber return array[x]; // BOOOM 11*673dc3d4SNico Weber // CHECK: ERROR: AddressSanitizer: stack-buffer-overflow 12*673dc3d4SNico Weber // CHECK: READ of size 1 at 13*673dc3d4SNico Weber // CHECK: is located in stack of thread T0 at offset 14*673dc3d4SNico Weber // CHECK: XXX::YYY::ZZZ 15*673dc3d4SNico Weber } 16*673dc3d4SNico Weber }; 17*673dc3d4SNico Weber } // namespace XXX 18*673dc3d4SNico Weber main(int argc,char ** argv)19*673dc3d4SNico Weberint main(int argc, char **argv) { 20*673dc3d4SNico Weber int res = XXX::YYY::ZZZ(argc + 10); 21*673dc3d4SNico Weber return res; 22*673dc3d4SNico Weber } 23