lkml.org 
[lkml]   [2022]   [Aug]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.10 076/158] netfilter: nf_tables: validate NFTA_SET_ELEM_OBJREF based on NFT_SET_OBJECT flag
    Date
    From: Pablo Neira Ayuso <pablo@netfilter.org>

    commit 5a2f3dc31811e93be15522d9eb13ed61460b76c8 upstream.

    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: 8aeff920dcc9 ("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>
    ---
    net/netfilter/nf_tables_api.c | 13 +++++++++----
    1 file changed, 9 insertions(+), 4 deletions(-)

    --- a/net/netfilter/nf_tables_api.c
    +++ b/net/netfilter/nf_tables_api.c
    @@ -5245,6 +5245,15 @@ static int nft_add_set_elem(struct nft_c
    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_c
    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);

    \
     
     \ /
      Last update: 2022-08-23 14:22    [W:3.133 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site