From: Pablo Neira Ayuso Date: Mon, 17 Apr 2023 15:50:28 +0000 (+0200) Subject: netfilter: nf_tables: tighten netlink attribute requirements for catch-all elements X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=8e1f40e8f707857a9327dac6fce11dc3a3270117;p=users%2Fjedix%2Flinux-maple.git netfilter: nf_tables: tighten netlink attribute requirements for catch-all elements [ Upstream commit d4eb7e39929a3b1ff30fb751b4859fc2410702a0 ] 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 Signed-off-by: Sasha Levin --- diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c index 251f4a9fbdb5..12d815b9aa13 100644 --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c @@ -6040,7 +6040,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) {