summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
diff options
context:
space:
mode:
authorJordan Rose <jordan_rose@apple.com>2012-08-31 18:19:18 +0000
committerJordan Rose <jordan_rose@apple.com>2012-08-31 18:19:18 +0000
commitd65f1c8d6ebdd070db205f958d647d88b93fcf5b (patch)
treedb951f63ac27dd5201555dd56816856ae326d852 /clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
parentfacebca6ba52a8c186d39ed76f5acf00f0876573 (diff)
downloadbcm5719-llvm-d65f1c8d6ebdd070db205f958d647d88b93fcf5b.tar.gz
bcm5719-llvm-d65f1c8d6ebdd070db205f958d647d88b93fcf5b.zip
[analyzer] RetainCountChecker: don't assume all functions have names.
Fixes a hard-to-reach crash when calling a non-member overloaded operator with arguments that may be callbacks. Future-proofing: don't make the same assumption in MallocSizeofChecker. Aside from possibly respecting attributes in the future, it might be possible to call 'malloc' through a function pointer. I audited all other uses of FunctionDecl::getIdentifier() in the analyzer; they all now correctly test to see if the identifier is present before using it. llvm-svn: 163012
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp')
-rw-r--r--clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
index 6710bfd3a5b..94e905cbf12 100644
--- a/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
@@ -950,8 +950,9 @@ void RetainSummaryManager::updateSummaryForCall(const RetainSummary *&S,
IdentifierInfo *Name = FC->getDecl()->getIdentifier();
// This callback frees the associated buffer.
- if (Name->isStr("CGBitmapContextCreateWithData"))
- RE = S->getRetEffect();
+ if (Name)
+ if (Name->isStr("CGBitmapContextCreateWithData"))
+ RE = S->getRetEffect();
}
S = getPersistentSummary(RE, RecEffect, DefEffect);
OpenPOWER on IntegriCloud