]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
netfilter: nft_exthdr: fix register tracking for F_PRESENT flag
authorFlorian Westphal <fw@strlen.de>
Tue, 9 Jun 2026 19:28:09 +0000 (21:28 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 10 Jun 2026 16:00:12 +0000 (18:00 +0200)
commit772cecf198da732faebb5dcfc46d66a505be8495
tree477ccc145bc5973aa7d806445cd8e4f6b38a0b4c
parenta84b6fedbc97078788be78dbdd7517d143ad1a77
netfilter: nft_exthdr: fix register tracking for F_PRESENT flag

nft_exthdr_init() passes user-controlled priv->len to
nft_parse_register_store(), which marks that many bytes in the
register bitmap as initialized.  However, when NFT_EXTHDR_F_PRESENT
is set, the eval paths write only 1 byte (nft_reg_store8) or
4 bytes (*dest = 0 on TCP/DCCP error path).  When len > 4,
registers beyond the first are never written, retaining
uninitialized stack data from nft_regs.

Bail out if userspace requests too much data when F_PRESENT is set.

Reported-by: Ji'an Zhou <eilaimemedsnaimel@gmail.com>
Fixes: c078ca3b0c5b ("netfilter: nft_exthdr: Add support for existence check")
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nft_exthdr.c