Tweak insecureAPI analyzer checks to have the ability to be individually disabled.

The solution is a bit inefficient: it creates N checkers, one for each check, and
each check does a dispatch on the function name.  This is redundant, but we can fix
this once we have the proper ability to enable/disable subchecks.

Fixes <rdar://problem/11780180>.

llvm-svn: 159459
This commit is contained in:
Ted Kremenek 2012-06-29 20:44:58 +00:00
parent cf86744ffe
commit a33b078e73
1 changed files with 2 additions and 8 deletions

View File

@ -379,13 +379,6 @@ void WalkAST::checkCall_getpw(const CallExpr *CE, const FunctionDecl *FD) {
//===----------------------------------------------------------------------===//
void WalkAST::checkCall_mktemp(const CallExpr *CE, const FunctionDecl *FD) {
if (!filter.check_mktemp) {
// Fall back to the security check of looking for enough 'X's in the
// format string, since that is a less severe warning.
checkCall_mkstemp(CE, FD);
return;
}
const FunctionProtoType *FPT
= dyn_cast<FunctionProtoType>(FD->getType().IgnoreParens());
if(!FPT)
@ -769,8 +762,9 @@ public:
}
#define REGISTER_CHECKER(name) \
namespace { class Checker_##name : public SecuritySyntaxChecker {}; }\
void ento::register##name(CheckerManager &mgr) {\
mgr.registerChecker<SecuritySyntaxChecker>()->filter.check_##name = true;\
mgr.registerChecker<Checker_##name>()->filter.check_##name = true;\
}
REGISTER_CHECKER(gets)