diff options
author | Anna Zaks <ganna@apple.com> | 2012-02-17 22:35:26 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2012-02-17 22:35:26 +0000 |
commit | 998e2754281b19bb1db19299ae16c2fd5947bcc0 (patch) | |
tree | e1f9ff0c4fcf0ab6e2d3bc779d4e46a9f3ae4eac /lib/StaticAnalyzer/Core/CheckerContext.cpp | |
parent | cf4c60feae11b2f6a135d7cd8ecf97a5040951c3 (diff) |
[analyzer] Generalize function name checking in CString checker.
(Ex: It was not treating __inline_strcpy as strcpy. Will add tests that
rely on this later on.)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150845 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/StaticAnalyzer/Core/CheckerContext.cpp')
-rw-r--r-- | lib/StaticAnalyzer/Core/CheckerContext.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/StaticAnalyzer/Core/CheckerContext.cpp b/lib/StaticAnalyzer/Core/CheckerContext.cpp index 6ad4162b8f..19942b8590 100644 --- a/lib/StaticAnalyzer/Core/CheckerContext.cpp +++ b/lib/StaticAnalyzer/Core/CheckerContext.cpp @@ -60,10 +60,14 @@ bool CheckerContext::isCLibraryFunction(const FunctionDecl *FD, return false; StringRef FName = II->getName(); - if (FName.startswith("__inline")) - return (FName.find(Name) != StringRef::npos); + if (FName.equals(Name)) + return true; + + if (FName.startswith("__inline") && (FName.find(Name) != StringRef::npos)) + return true; - if (FD->isExternC() && FName.equals(Name)) + if (FName.startswith("__") && FName.endswith("_chk") && + FName.find(Name) != StringRef::npos) return true; return false; |