diff options
author | Pavel Labath <labath@google.com> | 2013-06-12 07:45:04 +0000 |
---|---|---|
committer | Pavel Labath <labath@google.com> | 2013-06-12 07:45:04 +0000 |
commit | 7e18009a7a0b5b51efa5d8a045fe70c8c783255f (patch) | |
tree | 42ae1b82e382335b254267e12920e31a67ac4456 /clang/lib | |
parent | 9b62d1d5ee32ec7abca5ed2fdfc079aab2168c2a (diff) | |
download | bcm5719-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')
-rw-r--r-- | clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp | 5 |
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) |