Author: rkovacs Date: Fri Aug 3 13:42:02 2018 New Revision: 338918 URL: http://llvm.org/viewvc/llvm-project?rev=338918&view=rev Log: [analyzer] Add test for a crash fixed in r338775.
Do not crash if a CXXRecordDecl cannot be obtained for an object. Special thanks for the reproduction to Alexander Kornienko. Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/InnerPointerChecker.cpp cfe/trunk/test/Analysis/inner-pointer.cpp Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/InnerPointerChecker.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/InnerPointerChecker.cpp?rev=338918&r1=338917&r2=338918&view=diff ============================================================================== --- cfe/trunk/lib/StaticAnalyzer/Checkers/InnerPointerChecker.cpp (original) +++ cfe/trunk/lib/StaticAnalyzer/Checkers/InnerPointerChecker.cpp Fri Aug 3 13:42:02 2018 @@ -133,10 +133,7 @@ bool InnerPointerChecker::isCalledOnStri return false; CXXRecordDecl *Decl = ObjTy->getAsCXXRecordDecl(); - if (!Decl || Decl->getName() != "basic_string") - return false; - - return true; + return Decl && Decl->getName() == "basic_string"; } bool InnerPointerChecker::isInvalidatingMemberFunction( Modified: cfe/trunk/test/Analysis/inner-pointer.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/inner-pointer.cpp?rev=338918&r1=338917&r2=338918&view=diff ============================================================================== --- cfe/trunk/test/Analysis/inner-pointer.cpp (original) +++ cfe/trunk/test/Analysis/inner-pointer.cpp Fri Aug 3 13:42:02 2018 @@ -382,3 +382,13 @@ const char *escape_via_return_local() { // expected-note@-1 {{Inner pointer invalidated by call to destructor}} } // expected-warning {{Use of memory after it is freed}} // expected-note@-1 {{Use of memory after it is freed}} + + +char *c(); +class A {}; + +void no_CXXRecordDecl() { + A a, *b; + *(void **)&b = c() + 1; + *b = a; // no-crash +} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits