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)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 21 Dec 2022 16:34:00 +0000 (17:34 +0100)
commitf6594c372afd5cec8b1e9ee9ea8f8819d59c6fb1
treecc2ee356ca8a8ab21b4f7e9048c9b0c370e26f8f
parenta8fe4154fa5a1bae590b243ed60f871e5a5e1378
netfilter: nf_tables: perform type checking for existing sets

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>
net/netfilter/nf_tables_api.c