diff options
author | Devin Coughlin <dcoughlin@apple.com> | 2018-01-20 23:11:17 +0000 |
---|---|---|
committer | Devin Coughlin <dcoughlin@apple.com> | 2018-01-20 23:11:17 +0000 |
commit | 2ff57bcd18d3514c3f5baed6d34e02f885e81b28 (patch) | |
tree | b08dae3abff9858965590723381fed75ebb16d03 /clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp | |
parent | 5829d8f1f7ad3bf4796615caf941d97c116d815e (diff) | |
download | bcm5719-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.cpp | 12 |
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()); |