diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-08-04 22:35:42 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-08-04 22:35:42 +0300 |
commit | 1ee65000ea0b3d201ff1612c219e0ad8806b688a (patch) | |
tree | fc5cb9fbd15408059e351f1a7e417a397830f8bf | |
parent | e4c20844d13d4428466bb4bc3845b52c63985ca4 (diff) | |
download | paranucker-1ee65000ea0b3d201ff1612c219e0ad8806b688a.tar.gz paranucker-1ee65000ea0b3d201ff1612c219e0ad8806b688a.tar.bz2 paranucker-1ee65000ea0b3d201ff1612c219e0ad8806b688a.tar.xz paranucker-1ee65000ea0b3d201ff1612c219e0ad8806b688a.zip |
Add support for checking some global pointers.
-rw-r--r-- | src/analysis/expression.cpp | 2 | ||||
-rw-r--r-- | src/analysis/reports.cpp | 3 |
2 files changed, 4 insertions, 1 deletions
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", |