r313385 - [Analyzer] Check function name size before indexing.

George Karpenkov via cfe-commits cfe-commits at lists.llvm.org
Fri Sep 15 12:51:26 PDT 2017


Author: george.karpenkov
Date: Fri Sep 15 12:51:26 2017
New Revision: 313385

URL: http://llvm.org/viewvc/llvm-project?rev=313385&view=rev
Log:
[Analyzer] Check function name size before indexing.

https://reviews.llvm.org/D37908

Modified:
    cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
    cfe/trunk/test/Analysis/retain-release.mm

Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp?rev=313385&r1=313384&r2=313385&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp Fri Sep 15 12:51:26 2017
@@ -1211,7 +1211,8 @@ RetainSummaryManager::getFunctionSummary
 
     // Check for release functions, the only kind of functions that we care
     // about that don't return a pointer type.
-    if (FName[0] == 'C' && (FName[1] == 'F' || FName[1] == 'G')) {
+    if (FName.size() >= 2 &&
+        FName[0] == 'C' && (FName[1] == 'F' || FName[1] == 'G')) {
       // Test for 'CGCF'.
       FName = FName.substr(FName.startswith("CGCF") ? 4 : 2);
 

Modified: cfe/trunk/test/Analysis/retain-release.mm
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/retain-release.mm?rev=313385&r1=313384&r2=313385&view=diff
==============================================================================
--- cfe/trunk/test/Analysis/retain-release.mm (original)
+++ cfe/trunk/test/Analysis/retain-release.mm Fri Sep 15 12:51:26 2017
@@ -461,3 +461,5 @@ void	radar13722286::PrepareBitmap() {
 	}
 }
 
+// rdar://34210609
+void _() { _(); }; // no-warning




More information about the cfe-commits mailing list