aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--epan/dfilter/gencode.c3
-rw-r--r--epan/dfilter/semcheck.c6
-rw-r--r--test/suite_dfilter/group_syntax.py5
3 files changed, 11 insertions, 3 deletions
diff --git a/epan/dfilter/gencode.c b/epan/dfilter/gencode.c
index b223226bba..72b6aa73ee 100644
--- a/epan/dfilter/gencode.c
+++ b/epan/dfilter/gencode.c
@@ -581,8 +581,7 @@ gen_entity(dfwork_t *dfw, stnode_t *st_arg, GSList **jumps_ptr)
val = gen_arithmetic(dfw, st_arg, jumps_ptr);
}
else {
- WS_DEBUG_HERE("sttype is %s", stnode_type_name(st_arg));
- ws_assert_not_reached();
+ ws_error("Invalid sttype: %s", stnode_type_name(st_arg));
}
return val;
}
diff --git a/epan/dfilter/semcheck.c b/epan/dfilter/semcheck.c
index 1c8e4eeda4..b93707289f 100644
--- a/epan/dfilter/semcheck.c
+++ b/epan/dfilter/semcheck.c
@@ -1369,13 +1369,17 @@ static void
semcheck(dfwork_t *dfw, stnode_t *st_node)
{
LOG_NODE(st_node);
+ ftenum_t ftype;
switch (stnode_type_id(st_node)) {
case STTYPE_TEST:
check_test(dfw, st_node);
break;
case STTYPE_ARITHMETIC:
- check_arithmetic(dfw, st_node, FT_NONE);
+ ftype = check_arithmetic(dfw, st_node, FT_NONE);
+ if (ftype == FT_NONE) {
+ FAIL(dfw, st_node, "Constant expression is invalid.");
+ }
break;
case STTYPE_SLICE:
check_slice_sanity(dfw, st_node, FT_NONE);
diff --git a/test/suite_dfilter/group_syntax.py b/test/suite_dfilter/group_syntax.py
index e669e25415..13cf2e2c95 100644
--- a/test/suite_dfilter/group_syntax.py
+++ b/test/suite_dfilter/group_syntax.py
@@ -264,6 +264,11 @@ class case_arithmetic(unittest.TestCase):
dfilter = "1 + 2 == 2 + 1"
checkDFilterFail(dfilter, error)
+ def test_add_6(self, checkDFilterFail):
+ error = 'Constant expression is invalid'
+ dfilter = "1 - 2"
+ checkDFilterFail(dfilter, error)
+
def test_sub_1(self, checkDFilterCount):
dfilter = "udp.srcport == udp.dstport - 1"
checkDFilterCount(dfilter, 2)