From e6c83f45f522283c7afff4de7a71113116352dbf Mon Sep 17 00:00:00 2001 From: Florian Westphal Date: Thu, 1 Oct 2015 00:13:02 +0200 Subject: expression: provide clone operation for set element ops define addrs={ 1.2.3.4 } table ip filter { chain input { type filter hook input priority 0; ip saddr $addrs accept } } segfaults. Using saddr { 1.2.3.4 } instead of $addrs works. Link: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=801087 Tested-by: Arturo Borrero Gonzalez Signed-off-by: Florian Westphal --- src/expression.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/expression.c') diff --git a/src/expression.c b/src/expression.c index 3edc5501..ab195e5f 100644 --- a/src/expression.c +++ b/src/expression.c @@ -907,9 +907,19 @@ static void set_elem_expr_destroy(struct expr *expr) expr_free(expr->key); } +static void set_elem_expr_clone(struct expr *new, const struct expr *expr) +{ + new->key = expr_clone(expr->key); + new->expiration = expr->expiration; + new->timeout = expr->timeout; + if (expr->comment) + new->comment = xstrdup(expr->comment); +} + static const struct expr_ops set_elem_expr_ops = { .type = EXPR_SET_ELEM, .name = "set element", + .clone = set_elem_expr_clone, .print = set_elem_expr_print, .destroy = set_elem_expr_destroy, }; -- cgit v1.2.3