]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
evaluate: grab reference in set expression evaluation
authorPablo Neira Ayuso <pablo@netfilter.org>
Fri, 5 Nov 2021 14:55:20 +0000 (15:55 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 8 Nov 2021 09:59:33 +0000 (10:59 +0100)
Do not clone expression when evaluation a set expression, grabbing the
reference counter to reuse the object is sufficient.

Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/evaluate.c

index fd7818da1116f4f738985339f6d31e68f4ced5b3..eebd992159a117cdf4bd51d253b6cc9bd46b5074 100644 (file)
@@ -1439,7 +1439,7 @@ static int expr_evaluate_set(struct eval_ctx *ctx, struct expr **expr)
                        list_for_each_entry(j, &i->left->key->expressions, list) {
                                new = mapping_expr_alloc(&i->location,
                                                         expr_get(j),
-                                                        expr_clone(i->right));
+                                                        expr_get(i->right));
                                list_add_tail(&new->list, &set->expressions);
                                set->size++;
                        }
@@ -1457,7 +1457,7 @@ static int expr_evaluate_set(struct eval_ctx *ctx, struct expr **expr)
 
                if (elem->etype == EXPR_SET_ELEM &&
                    elem->key->etype == EXPR_SET) {
-                       struct expr *new = expr_clone(elem->key);
+                       struct expr *new = expr_get(elem->key);
 
                        set->set_flags |= elem->key->set_flags;
                        list_replace(&i->list, &new->list);