diff options
author | João Valverde <j@v6e.pt> | 2022-12-26 20:37:55 +0000 |
---|---|---|
committer | João Valverde <j@v6e.pt> | 2022-12-27 01:54:57 +0000 |
commit | 6399f724d9c8f7926ba7bbd16eceb503f11b8602 (patch) | |
tree | e8647e30d636ed173c242ee1f10823b5ce14eaa9 /epan/dfilter/dfunctions.c | |
parent | 6c8cdebe8751ce2077ce6c1d5e0936434d9fd89c (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.c | 15 |
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; } |