netfilter: nf_tables: perform type checking for existing sets
authorPablo Neira Ayuso <pablo@netfilter.org>
Mon, 19 Dec 2022 19:09:00 +0000 (20:09 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 12 Jan 2023 10:59:08 +0000 (11:59 +0100)
commit9d30cb442156ebca5524927b73358cb5b8baf5be
tree5794d3a65075b47736315f5e8833a284b0c18a26
parentc3bfb7784a09a10bca3e42f6d20ff02346a5bd40
netfilter: nf_tables: perform type checking for existing sets

[ Upstream commit f6594c372afd5cec8b1e9ee9ea8f8819d59c6fb1 ]

If a ruleset declares a set name that matches an existing set in the
kernel, then validate that this declaration really refers to the same
set, otherwise bail out with EEXIST.

Currently, the kernel reports success when adding a set that already
exists in the kernel. This usually results in EINVAL errors at a later
stage, when the user adds elements to the set, if the set declaration
mismatches the existing set representation in the kernel.

Add a new function to check that the set declaration really refers to
the same existing set in the kernel.

Fixes: 96518518cc41 ("netfilter: add nftables")
Reported-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
net/netfilter/nf_tables_api.c