diff options
author | George Karpenkov <ekarpenkov@apple.com> | 2017-09-15 19:51:26 +0000 |
---|---|---|
committer | George Karpenkov <ekarpenkov@apple.com> | 2017-09-15 19:51:26 +0000 |
commit | e28adb4fb2a1f773e5f8ed5172df392fc4d40506 (patch) | |
tree | 561eb580d64bb15b442ae0aea7146d8ae04f5b47 /clang | |
parent | 457fb0b4a07e0d1249322f3737f057e7c358136c (diff) | |
download | bcm5719-llvm-e28adb4fb2a1f773e5f8ed5172df392fc4d40506.tar.gz bcm5719-llvm-e28adb4fb2a1f773e5f8ed5172df392fc4d40506.zip |
[Analyzer] Check function name size before indexing.
https://reviews.llvm.org/D37908
llvm-svn: 313385
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp | 3 | ||||
-rw-r--r-- | clang/test/Analysis/retain-release.mm | 2 |
2 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp index c348ecf4fd8..165bc049938 100644 --- a/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp @@ -1211,7 +1211,8 @@ RetainSummaryManager::getFunctionSummary(const FunctionDecl *FD) { // 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); diff --git a/clang/test/Analysis/retain-release.mm b/clang/test/Analysis/retain-release.mm index c9817005c2c..c694fd33c59 100644 --- a/clang/test/Analysis/retain-release.mm +++ b/clang/test/Analysis/retain-release.mm @@ -461,3 +461,5 @@ void radar13722286::PrepareBitmap() { } } +// rdar://34210609 +void _() { _(); }; // no-warning |