netfilter: nf_tables: tighten netlink attribute requirements for catch-all elements
authorPablo Neira Ayuso <pablo@netfilter.org>
Mon, 17 Apr 2023 15:50:28 +0000 (17:50 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 18 Apr 2023 07:30:21 +0000 (09:30 +0200)
If NFT_SET_ELEM_CATCHALL is set on, then userspace provides no set element
key. Otherwise, bail out with -EINVAL.

Fixes: aaa31047a6d2 ("netfilter: nftables: add catch-all set element support")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nf_tables_api.c

index 98043e8..e48ab8d 100644 (file)
@@ -6108,7 +6108,8 @@ static int nft_add_set_elem(struct nft_ctx *ctx, struct nft_set *set,
        if (err < 0)
                return err;
 
-       if (!nla[NFTA_SET_ELEM_KEY] && !(flags & NFT_SET_ELEM_CATCHALL))
+       if (((flags & NFT_SET_ELEM_CATCHALL) && nla[NFTA_SET_ELEM_KEY]) ||
+           (!(flags & NFT_SET_ELEM_CATCHALL) && !nla[NFTA_SET_ELEM_KEY]))
                return -EINVAL;
 
        if (flags != 0) {