You've already forked linux-rockchip
mirror of
https://github.com/armbian/linux-rockchip.git
synced 2026-01-06 11:08:10 -08:00
netfilter: nf_tables: validate NFTA_SET_ELEM_OBJREF based on NFT_SET_OBJECT flag
commit5a2f3dc318upstream. If the NFTA_SET_ELEM_OBJREF netlink attribute is present and NFT_SET_OBJECT flag is set on, report EINVAL. Move existing sanity check earlier to validate that NFT_SET_OBJECT requires NFTA_SET_ELEM_OBJREF. Fixes:8aeff920dc("netfilter: nf_tables: add stateful object reference to set elements") Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
8d2fe4b9ed
commit
01b0cae6b7
@@ -5245,6 +5245,15 @@ static int nft_add_set_elem(struct nft_ctx *ctx, struct nft_set *set,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (set->flags & NFT_SET_OBJECT) {
|
||||
if (!nla[NFTA_SET_ELEM_OBJREF] &&
|
||||
!(flags & NFT_SET_ELEM_INTERVAL_END))
|
||||
return -EINVAL;
|
||||
} else {
|
||||
if (nla[NFTA_SET_ELEM_OBJREF])
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if ((flags & NFT_SET_ELEM_INTERVAL_END) &&
|
||||
(nla[NFTA_SET_ELEM_DATA] ||
|
||||
nla[NFTA_SET_ELEM_OBJREF] ||
|
||||
@@ -5322,10 +5331,6 @@ static int nft_add_set_elem(struct nft_ctx *ctx, struct nft_set *set,
|
||||
expr->ops->size);
|
||||
|
||||
if (nla[NFTA_SET_ELEM_OBJREF] != NULL) {
|
||||
if (!(set->flags & NFT_SET_OBJECT)) {
|
||||
err = -EINVAL;
|
||||
goto err_parse_key_end;
|
||||
}
|
||||
obj = nft_obj_lookup(ctx->net, ctx->table,
|
||||
nla[NFTA_SET_ELEM_OBJREF],
|
||||
set->objtype, genmask);
|
||||
|
||||
Reference in New Issue
Block a user