From: Pablo Neira Ayuso Date: Thu, 14 Dec 2023 21:43:22 +0000 (+0100) Subject: netfilter: nf_tables: validate chain type update if available X-Git-Tag: v6.6.17~1163 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f1ee0ffbc0243f0a9dc4a9348fffed710d9ea419;p=platform%2Fkernel%2Flinux-rpi.git netfilter: nf_tables: validate chain type update if available [ Upstream commit aaba7ddc8507f4ad5bbd07988573967632bc2385 ] Parse netlink attribute containing the chain type in this update, to bail out if this is different from the existing type. Otherwise, it is possible to define a chain with the same name, hook and priority but different type, which is silently ignored. Fixes: 96518518cc41 ("netfilter: add nftables") 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 24cad36..5822912 100644 --- a/net/netfilter/nf_tables_api.c +++ b/net/netfilter/nf_tables_api.c @@ -2263,7 +2263,16 @@ static int nft_chain_parse_hook(struct net *net, return -EOPNOTSUPP; } - type = basechain->type; + if (nla[NFTA_CHAIN_TYPE]) { + type = __nf_tables_chain_type_lookup(nla[NFTA_CHAIN_TYPE], + family); + if (!type) { + NL_SET_BAD_ATTR(extack, nla[NFTA_CHAIN_TYPE]); + return -ENOENT; + } + } else { + type = basechain->type; + } } if (!try_module_get(type->owner)) {