From 1ee65000ea0b3d201ff1612c219e0ad8806b688a Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 4 Aug 2015 22:35:42 +0300 Subject: Add support for checking some global pointers. --- src/analysis/expression.cpp | 2 ++ src/analysis/reports.cpp | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp index e3f3816..235aa84 100644 --- a/src/analysis/expression.cpp +++ b/src/analysis/expression.cpp @@ -302,6 +302,7 @@ void analyseModifyExpr(ModifyExprNode *node, const WalkItem &wi, WalkItem &wo) { VarItem var1 = getVariableName(arg); VarItem var2 = getVariableName(node->args[1]); + //Log::log("analyseModifyExpr vars: %s, %s\n", var1.name.c_str(), var2.name.c_str()); Node *arg0 = arg; if (arg == COMPONENT_REF) @@ -370,6 +371,7 @@ void analyseModifyExpr(ModifyExprNode *node, const WalkItem &wi, WalkItem &wo) } else { + reportParmDeclLeftNullPointer(node, node->args[0], wi); reportParmDeclNullPointer(node, node->args[1], wi); } } diff --git a/src/analysis/reports.cpp b/src/analysis/reports.cpp index 7e7ceb3..0f4b197 100644 --- a/src/analysis/reports.cpp +++ b/src/analysis/reports.cpp @@ -123,7 +123,8 @@ void reportParmDeclLeftNullPointer(Node *mainNode, FOR_EACH (var, vars) { if (!var.isNonNull && - isIn(var.name, wi.needCheckNullVars)) + (isIn(var.name, wi.needCheckNullVars) || + isNotIn(var.name, wi.knownVars))) { Log::warn(findBackLocation(mainNode), "Using field '%s' without checking for null pointer", -- cgit v1.2.3-60-g2f50