summaryrefslogtreecommitdiff
path: root/src/analysis/expression.cpp
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2015-06-09 22:30:25 +0300
committerAndrei Karas <akaras@inbox.ru>2015-06-09 22:30:25 +0300
commit720a4f2590186e38e1aca5331ba0d57055305c8e (patch)
tree1417ebb8d5bb6203c78d96ef25aabea0ce241e0d /src/analysis/expression.cpp
parentba830ddd892fc89944578d93e5967b6476cc7a63 (diff)
downloadparanucker-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.cpp20
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;
+}
+
}