summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2021-11-05 15:55:20 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2021-11-08 10:59:33 +0100
commit54fad93312fcdf07ab3ebbe3d807c57c71440cd2 (patch)
treedd3ed2d790313322284965873301f6ba24ad1311 /src
parentfe4e527ce2a2fb9b6efa982b521e1397f20134af (diff)
evaluate: grab reference in set expression evaluation
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>
Diffstat (limited to 'src')
-rw-r--r--src/evaluate.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/evaluate.c b/src/evaluate.c
index fd7818da..eebd9921 100644
--- a/src/evaluate.c
+++ b/src/evaluate.c
@@ -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);