summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Checkers
diff options
context:
space:
mode:
authorPavel Labath <labath@google.com>2013-06-12 07:45:04 +0000
committerPavel Labath <labath@google.com>2013-06-12 07:45:04 +0000
commit7e18009a7a0b5b51efa5d8a045fe70c8c783255f (patch)
tree42ae1b82e382335b254267e12920e31a67ac4456 /clang/lib/StaticAnalyzer/Checkers
parent9b62d1d5ee32ec7abca5ed2fdfc079aab2168c2a (diff)
downloadbcm5719-llvm-7e18009a7a0b5b51efa5d8a045fe70c8c783255f.tar.gz
bcm5719-llvm-7e18009a7a0b5b51efa5d8a045fe70c8c783255f.zip
Fix memory corruption in CStringChecker
Summary: "register" functions for the checker were caching the checker objects in a static variable. This caused problems when the function is called with a different CheckerManager. Reviewers: klimek CC: cfe-commits Differential Revision: http://llvm-reviews.chandlerc.com/D955 llvm-svn: 183823
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers')
-rw-r--r--clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp5
1 files changed, 1 insertions, 4 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
index aa1ca6f2f80..932f6316b55 100644
--- a/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
@@ -2018,10 +2018,7 @@ void CStringChecker::checkDeadSymbols(SymbolReaper &SR,
#define REGISTER_CHECKER(name) \
void ento::register##name(CheckerManager &mgr) {\
- static CStringChecker *TheChecker = 0; \
- if (TheChecker == 0) \
- TheChecker = mgr.registerChecker<CStringChecker>(); \
- TheChecker->Filter.Check##name = true; \
+ mgr.registerChecker<CStringChecker>()->Filter.Check##name = true; \
}
REGISTER_CHECKER(CStringNullArg)
OpenPOWER on IntegriCloud