summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2020-07-21 18:09:28 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2020-07-22 11:47:08 +0200
commit5173151863d3f44fa77506b0af25560fe1918c0f (patch)
tree2dfec5b867acbdbe430a9ed7157df7ff55f5f160
parent856b68c4fd13e869a19c76a2ac6532e5d024ce09 (diff)
evaluate: replace variable expression by the value expression
The variable expression provides the binding between the variable dereference and the value expression. Replace the variable expression by the real value expression after the evaluation. Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r--src/evaluate.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/evaluate.c b/src/evaluate.c
index 3e94e047..9290c6ff 100644
--- a/src/evaluate.c
+++ b/src/evaluate.c
@@ -2013,10 +2013,13 @@ static int expr_evaluate_variable(struct eval_ctx *ctx, struct expr **exprp)
{
struct expr *new = expr_clone((*exprp)->sym->expr);
+ if (expr_evaluate(ctx, &new) < 0)
+ return -1;
+
expr_free(*exprp);
*exprp = new;
- return expr_evaluate(ctx, exprp);
+ return 0;
}
static int expr_evaluate_xfrm(struct eval_ctx *ctx, struct expr **exprp)