From: Patrick McHardy Date: Tue, 2 Jun 2015 10:16:42 +0000 (+0200) Subject: eval: prohibit variable sized types in concat expressions X-Git-Tag: v0.5~50^2~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=665a26232b2a53e7f47481830c4be79d890b0ff4;p=thirdparty%2Fnftables.git eval: prohibit variable sized types in concat expressions Since we need to calculate the length of the entire concat type, we can not support variable sized types where the length can't be determined by the type. This only affects base types since all higher types include a length. Signed-off-by: Patrick McHardy --- diff --git a/src/evaluate.c b/src/evaluate.c index e260a803..d99b38f4 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -620,6 +620,13 @@ static int expr_evaluate_concat(struct eval_ctx *ctx, struct expr **expr) "expecting %s", dtype->desc); + if (dtype == NULL && i->dtype->size == 0) + return expr_binary_error(ctx->msgs, i, *expr, + "can not use variable sized " + "data types (%s) in concat " + "expressions", + i->dtype->name); + tmp = concat_subtype_lookup(type, --off); expr_set_context(&ctx->ectx, tmp, tmp->size);