diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-09 22:30:25 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-09 22:30:25 +0300 |
commit | 720a4f2590186e38e1aca5331ba0d57055305c8e (patch) | |
tree | 1417ebb8d5bb6203c78d96ef25aabea0ce241e0d /src/analysis/expression.cpp | |
parent | ba830ddd892fc89944578d93e5967b6476cc7a63 (diff) | |
download | paranucker-720a4f2590186e38e1aca5331ba0d57055305c8e.tar.gz paranucker-720a4f2590186e38e1aca5331ba0d57055305c8e.tar.bz2 paranucker-720a4f2590186e38e1aca5331ba0d57055305c8e.tar.xz paranucker-720a4f2590186e38e1aca5331ba0d57055305c8e.zip |
Add warning in analyser for node POINTER_PLUS_EXPR.
Diffstat (limited to 'src/analysis/expression.cpp')
-rw-r--r-- | src/analysis/expression.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/analysis/expression.cpp b/src/analysis/expression.cpp index 114208c..81deae1 100644 --- a/src/analysis/expression.cpp +++ b/src/analysis/expression.cpp @@ -27,6 +27,7 @@ #include "nodes/expr/indirect_ref.h" #include "nodes/expr/modify_expr.h" +#include "nodes/expr/pointerplus_expr.h" #include <set> @@ -62,4 +63,23 @@ WalkItem analyseModifyExpr(ModifyExprNode *node, WalkItem wi) return wi; } +WalkItem analysePointerPlusExpr(PointerPlusExprNode *node, WalkItem wi) +{ + // need atleast one arg for check + if (node->args.empty() || command == FindArgs) + return wi; + + Node *arg = node->args[0]; + if (arg->nodeType == PARM_DECL) + { + if (wi.checkNullVars.find(arg->label) != wi.checkNullVars.end()) + { + Log::warn(findBackLocation(node), + "Using variable without check for NULL"); + } + } + + return wi; +} + } |