netfilter: nf_tables: fix double-free on set expression from the error path
authorPablo Neira Ayuso <pablo@netfilter.org>
Wed, 18 Mar 2020 00:14:58 +0000 (01:14 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Thu, 19 Mar 2020 10:37:31 +0000 (11:37 +0100)
After copying the expression to the set element extension, release the
expression and reset the pointer to avoid a double-free from the error
path.

Fixes: 409444522976 ("netfilter: nf_tables: add elements with stateful expressions")
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nf_tables_api.c

index f1910cd..29ad33e 100644 (file)
@@ -5133,6 +5133,7 @@ static int nft_add_set_elem(struct nft_ctx *ctx, struct nft_set *set,
        if (expr) {
                memcpy(nft_set_ext_expr(ext), expr, expr->ops->size);
                kfree(expr);
+               expr = NULL;
        }
 
        trans = nft_trans_elem_alloc(ctx, NFT_MSG_NEWSETELEM, set);