]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
monitor: too large shift exponent displaying payload expression
authorPablo Neira Ayuso <pablo@netfilter.org>
Mon, 10 Jun 2024 17:08:20 +0000 (19:08 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 11 Jun 2024 21:32:56 +0000 (23:32 +0200)
ASAN reports too large shift exponent when displaying traces for raw
payload expression:

  trace id ec23e848 ip x y packet: oif "wlan0" src/netlink.c:2100:32: runtime error: shift exponent 1431657095 is too large for 32-bit type 'int'

skip if proto_unknown_template is set on in this payload expression.

Fixes: be5d9120e81e ("nft monitor [ trace ]")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/netlink.c

index 0088b742d573486935ac6e4c8cc8a5d70656ff20..efb0b69939dcfc7fe180f1f91c6528edf5382bf9 100644 (file)
@@ -2096,6 +2096,7 @@ restart:
                /* Skip unknown and filtered expressions */
                desc = lhs->payload.desc;
                if (lhs->dtype == &invalid_type ||
+                   lhs->payload.tmpl == &proto_unknown_template ||
                    desc->checksum_key == payload_hdr_field(lhs) ||
                    desc->format.filter & (1 << payload_hdr_field(lhs))) {
                        expr_free(lhs);