diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2020-07-21 18:09:28 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2020-07-22 11:47:08 +0200 |
commit | 5173151863d3f44fa77506b0af25560fe1918c0f (patch) | |
tree | 2dfec5b867acbdbe430a9ed7157df7ff55f5f160 /src/evaluate.c | |
parent | 856b68c4fd13e869a19c76a2ac6532e5d024ce09 (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>
Diffstat (limited to 'src/evaluate.c')
-rw-r--r-- | src/evaluate.c | 5 |
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) |