From 715c8e7b625a48d3a64d9d2a7f83e33e458b1355 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Tue, 3 Apr 2018 13:00:31 +0200 Subject: evaluate: propagate binop_transfer() adjustment to set key size The right shift transfer may be result in adjusting the set key size, eg. ip6 dscp results in fetching 6 bits that are splitted between two bytes, hence the set element ends up being 16 bytes long. Reported-by: Florian Westphal Signed-off-by: Pablo Neira Ayuso --- src/evaluate.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/evaluate.c') diff --git a/src/evaluate.c b/src/evaluate.c index d6961099..967ad162 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -1282,8 +1282,9 @@ static int expr_evaluate_map(struct eval_ctx *ctx, struct expr **expr) if (binop_transfer(ctx, expr) < 0) return -1; - map = *expr; + ctx->set->key->len = ctx->ectx.len; ctx->set = NULL; + map = *expr; map->mappings->set->flags |= map->mappings->set->init->set_flags; break; case EXPR_SYMBOL: -- cgit v1.2.3