diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2021-11-05 15:55:20 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2021-11-08 10:59:33 +0100 |
commit | 54fad93312fcdf07ab3ebbe3d807c57c71440cd2 (patch) | |
tree | dd3ed2d790313322284965873301f6ba24ad1311 | |
parent | fe4e527ce2a2fb9b6efa982b521e1397f20134af (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>
-rw-r--r-- | src/evaluate.c | 4 |
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); |