]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
netfilter: reject zero shift in nft_bitwise
authorKai Ma <k4729.23098@gmail.com>
Wed, 22 Apr 2026 14:54:18 +0000 (22:54 +0800)
committerPablo Neira Ayuso <pablo@netfilter.org>
Fri, 24 Apr 2026 18:09:57 +0000 (20:09 +0200)
commitfe11e5c40817b84abaa5d83bfb6586d8412bfd07
treefad831f11cabc967b37fa2e5d50e3a60a1b54329
parent4b2b4d7d4e203c92db8966b163edfacb1f0e1e29
netfilter: reject zero shift in nft_bitwise

Reject zero shift operands for nft_bitwise left and right shift
expressions during initialization.

The carry propagation logic computes the carry from the adjacent 32-bit
word using BITS_PER_TYPE(u32) - shift. A zero shift operand turns this
into a 32-bit shift, which is undefined behaviour.

Reject zero shift operands in the control plane, alongside the existing
check for values greater than or equal to 32, so malformed rules never
reach the packet path.

Fixes: 567d746b55bc ("netfilter: bitwise: add support for shifts.")
Cc: stable@kernel.org
Reported-by: Yuan Tan <yuantan098@gmail.com>
Reported-by: Yifan Wu <yifanwucs@gmail.com>
Reported-by: Juefei Pu <tomapufckgml@gmail.com>
Reported-by: Xin Liu <bird@lzu.edu.cn>
Signed-off-by: Kai Ma <k4729.23098@gmail.com>
Signed-off-by: Ren Wei <n05ec@lzu.edu.cn>
Reviewed-by: Fernando Fernandez Mancera <fmancera@suse.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nft_bitwise.c