From: Florian Westphal Date: Wed, 22 Apr 2026 17:18:59 +0000 (+0200) Subject: evaluate: remove zero shift expressions at eval stage X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=HEAD;p=thirdparty%2Fnftables.git evaluate: remove zero shift expressions at eval stage There is a kernel patch (under review) that rejects 0-shifts from control plane. Remove zero-shifts at eval stage: they are a no-op in any case. Signed-off-by: Florian Westphal Reviewed-by: Fernando Fernandez Mancera --- diff --git a/src/evaluate.c b/src/evaluate.c index 482708ae..8bb7b609 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -1454,6 +1454,12 @@ static int expr_evaluate_shift(struct eval_ctx *ctx, struct expr **expr) "shifts exceeding %u bits are not supported", UINT_MAX); shift = mpz_get_uint32(right->value); + if (shift == 0) { + *expr = expr_get(left); + expr_free(op); + return 0; + } + if (ctx->stmt_len > left->len) max_shift_len = ctx->stmt_len; else