]> 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>
Thu, 23 Jan 2025 00:35:35 +0000 (01:35 +0100)
commit 016f37f1268fa1003c46c66655697d3f58d86598 upstream.

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 24dd7fa9f22659fefbd6da241adf3ba5f61f7d81..853a1e3eb430427cf227c3efe374d9431a815116 100644 (file)
@@ -2046,6 +2046,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);