Skip to content

Commit 5a2f3dc

Browse files
committed
netfilter: nf_tables: validate NFTA_SET_ELEM_OBJREF based on NFT_SET_OBJECT flag
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: 8aeff92 ("netfilter: nf_tables: add stateful object reference to set elements") Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
1 parent 271c5ca commit 5a2f3dc

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

net/netfilter/nf_tables_api.c

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5894,6 +5894,15 @@ static int nft_add_set_elem(struct nft_ctx *ctx, struct nft_set *set,
58945894
return -EINVAL;
58955895
}
58965896

5897+
if (set->flags & NFT_SET_OBJECT) {
5898+
if (!nla[NFTA_SET_ELEM_OBJREF] &&
5899+
!(flags & NFT_SET_ELEM_INTERVAL_END))
5900+
return -EINVAL;
5901+
} else {
5902+
if (nla[NFTA_SET_ELEM_OBJREF])
5903+
return -EINVAL;
5904+
}
5905+
58975906
if ((flags & NFT_SET_ELEM_INTERVAL_END) &&
58985907
(nla[NFTA_SET_ELEM_DATA] ||
58995908
nla[NFTA_SET_ELEM_OBJREF] ||
@@ -6032,10 +6041,6 @@ static int nft_add_set_elem(struct nft_ctx *ctx, struct nft_set *set,
60326041
}
60336042

60346043
if (nla[NFTA_SET_ELEM_OBJREF] != NULL) {
6035-
if (!(set->flags & NFT_SET_OBJECT)) {
6036-
err = -EINVAL;
6037-
goto err_parse_key_end;
6038-
}
60396044
obj = nft_obj_lookup(ctx->net, ctx->table,
60406045
nla[NFTA_SET_ELEM_OBJREF],
60416046
set->objtype, genmask);

0 commit comments

Comments
 (0)