summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
diff options
context:
space:
mode:
authorDevin Coughlin <dcoughlin@apple.com>2018-01-20 23:11:17 +0000
committerDevin Coughlin <dcoughlin@apple.com>2018-01-20 23:11:17 +0000
commit2ff57bcd18d3514c3f5baed6d34e02f885e81b28 (patch)
treeb08dae3abff9858965590723381fed75ebb16d03 /clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
parent5829d8f1f7ad3bf4796615caf941d97c116d815e (diff)
downloadbcm5719-llvm-2ff57bcd18d3514c3f5baed6d34e02f885e81b28.tar.gz
bcm5719-llvm-2ff57bcd18d3514c3f5baed6d34e02f885e81b28.zip
[analyzer] Provide a check name when MallocChecker enables CStringChecker
Fix an assertion failure caused by a missing CheckName. The malloc checker enables "basic" support in the CStringChecker, which causes some CString bounds checks to be enabled. In this case, make sure that we have a valid CheckName for the BugType. llvm-svn: 323052
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp')
-rw-r--r--clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp12
1 files changed, 11 insertions, 1 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
index 079032329ad..bd4033784ef 100644
--- a/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
@@ -309,9 +309,19 @@ ProgramStateRef CStringChecker::CheckLocation(CheckerContext &C,
if (!N)
return nullptr;
+ CheckName Name;
+ // These checks are either enabled by the CString out-of-bounds checker
+ // explicitly or the "basic" CStringNullArg checker support that Malloc
+ // checker enables.
+ assert(Filter.CheckCStringOutOfBounds || Filter.CheckCStringNullArg);
+ if (Filter.CheckCStringOutOfBounds)
+ Name = Filter.CheckNameCStringOutOfBounds;
+ else
+ Name = Filter.CheckNameCStringNullArg;
+
if (!BT_Bounds) {
BT_Bounds.reset(new BuiltinBug(
- Filter.CheckNameCStringOutOfBounds, "Out-of-bound array access",
+ Name, "Out-of-bound array access",
"Byte string function accesses out-of-bound array element"));
}
BuiltinBug *BT = static_cast<BuiltinBug*>(BT_Bounds.get());
OpenPOWER on IntegriCloud