1*7c3d14c8STreehugger Robot // RUN: %clangxx_asan -O0 %s -o %t && not %run %t 2>&1 | FileCheck %s 2*7c3d14c8STreehugger Robot 3*7c3d14c8STreehugger Robot namespace XXX { 4*7c3d14c8STreehugger Robot class YYY { 5*7c3d14c8STreehugger Robot public: 6*7c3d14c8STreehugger Robot static char ZZZ[]; 7*7c3d14c8STreehugger Robot }; 8*7c3d14c8STreehugger Robot char YYY::ZZZ[] = "abc"; 9*7c3d14c8STreehugger Robot } 10*7c3d14c8STreehugger Robot main(int argc,char ** argv)11*7c3d14c8STreehugger Robotint main(int argc, char **argv) { 12*7c3d14c8STreehugger Robot return (int)XXX::YYY::ZZZ[argc + 5]; // BOOM 13*7c3d14c8STreehugger Robot // CHECK: {{READ of size 1 at 0x.*}} 14*7c3d14c8STreehugger Robot // CHECK: {{0x.* is located 2 bytes to the right of global variable}} 15*7c3d14c8STreehugger Robot // CHECK: 'XXX::YYY::ZZZ' {{.*}} of size 4 16*7c3d14c8STreehugger Robot // CHECK: 'XXX::YYY::ZZZ' is ascii string 'abc' 17*7c3d14c8STreehugger Robot } 18