aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dfilter/dfunctions.c
diff options
context:
space:
mode:
authorJoão Valverde <j@v6e.pt>2022-12-26 20:37:55 +0000
committerJoão Valverde <j@v6e.pt>2022-12-27 01:54:57 +0000
commit6399f724d9c8f7926ba7bbd16eceb503f11b8602 (patch)
treee8647e30d636ed173c242ee1f10823b5ce14eaa9 /epan/dfilter/dfunctions.c
parent6c8cdebe8751ce2077ce6c1d5e0936434d9fd89c (diff)
dfilter: Fix crash with min/max literal argument
Filter: max(1,_ws.ftypes.int8) == 1 ** (dftest:64938) 01:43:25.950180 [DFilter ERROR] epan/dfilter/sttype-field.c:117 -- sttype_field_ftenum(): Magic num is 0x5cf30031, but should be 0xfc2002cf
Diffstat (limited to 'epan/dfilter/dfunctions.c')
-rw-r--r--epan/dfilter/dfunctions.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/epan/dfilter/dfunctions.c b/epan/dfilter/dfunctions.c
index ba8de42705..5c8b122878 100644
--- a/epan/dfilter/dfunctions.c
+++ b/epan/dfilter/dfunctions.c
@@ -352,12 +352,11 @@ ul_semcheck_compare(dfwork_t *dfw, const char *func_name, ftenum_t lhs_ftype,
else if (stnode_type_id(arg) == STTYPE_FUNCTION) {
ftype = check_function(dfw, arg, lhs_ftype);
}
- else {
+ else if (stnode_type_id(arg) == STTYPE_FIELD || stnode_type_id(arg) == STTYPE_REFERENCE) {
ftype = sttype_field_ftenum(arg);
}
-
- if (ftype == FT_NONE) {
- FAIL(dfw, arg, "Argument '%s' (FT_NONE) is not valid for %s()",
+ else {
+ FAIL(dfw, arg, "Argument '%s' is not valid for %s()",
stnode_todisplay(arg), func_name);
}
@@ -375,14 +374,14 @@ ul_semcheck_compare(dfwork_t *dfw, const char *func_name, ftenum_t lhs_ftype,
else if (stnode_type_id(arg) == STTYPE_FUNCTION) {
ft_arg = check_function(dfw, arg, ftype);
}
- else {
+ else if (stnode_type_id(arg) == STTYPE_FIELD || stnode_type_id(arg) == STTYPE_REFERENCE) {
ft_arg = sttype_field_ftenum(arg);
}
-
- if (ft_arg == FT_NONE) {
- FAIL(dfw, arg, "Argument '%s' (FT_NONE) is not valid for %s()",
+ else {
+ FAIL(dfw, arg, "Argument '%s' is not valid for %s()",
stnode_todisplay(arg), func_name);
}
+
if (ftype == FT_NONE) {
ftype = ft_arg;
}