diff options
author | Florian Westphal <fw@strlen.de> | 2015-10-01 00:13:02 +0200 |
---|---|---|
committer | Florian Westphal <fw@strlen.de> | 2015-10-06 12:06:19 +0200 |
commit | e6c83f45f522283c7afff4de7a71113116352dbf (patch) | |
tree | 02f5c3b5511cc47754be8aea5c354dfa872f0420 /src/expression.c | |
parent | bbcd43ec4517b554c1b93445c84831f23e96ecdd (diff) |
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 <arturo.borrero.glez@gmail.com>
Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'src/expression.c')
-rw-r--r-- | src/expression.c | 10 |
1 files changed, 10 insertions, 0 deletions
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, }; |