summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
diff options
context:
space:
mode:
authorDavid Carlier <devnexen@gmail.com>2018-05-23 04:38:25 +0000
committerDavid Carlier <devnexen@gmail.com>2018-05-23 04:38:25 +0000
commit3c90fcebd4adebe2bb5d4fd91379348510951ec9 (patch)
tree853002527c04f708b5a5376b4f7cfffcbf59d90a /clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
parent5764db4e57e217b2ecaa6c9800ec98edc2a5e7c2 (diff)
downloadbcm5719-llvm-3c90fcebd4adebe2bb5d4fd91379348510951ec9.tar.gz
bcm5719-llvm-3c90fcebd4adebe2bb5d4fd91379348510951ec9.zip
[analyzer] CStringChecker fix for strlcpy when no bytes are copied to the dest buffer
Again, strlc* does not return a pointer so the zero size case doest not fit. Reviewers: NoQ, george.karpenkov Reviewed by: NoQ Differential Revision: https://reviews.llvm.org/D47007 llvm-svn: 333060
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp')
-rw-r--r--clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
index 39db5861890..a51bc062e19 100644
--- a/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
+++ b/clang/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
@@ -1652,7 +1652,11 @@ void CStringChecker::evalStrcpyCommon(CheckerContext &C, const CallExpr *CE,
// If the size is known to be zero, we're done.
if (StateZeroSize && !StateNonZeroSize) {
- StateZeroSize = StateZeroSize->BindExpr(CE, LCtx, DstVal);
+ if (returnPtr) {
+ StateZeroSize = StateZeroSize->BindExpr(CE, LCtx, DstVal);
+ } else {
+ StateZeroSize = StateZeroSize->BindExpr(CE, LCtx, *lenValNL);
+ }
C.addTransition(StateZeroSize);
return;
}
OpenPOWER on IntegriCloud