From: Pablo Neira Ayuso Date: Sat, 5 Dec 2015 19:04:22 +0000 (+0100) Subject: netlink_delinearize: postprocess expression before range merge X-Git-Tag: v0.6~180 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=564b0e7c13f9;p=thirdparty%2Fnftables.git netlink_delinearize: postprocess expression before range merge Dependency statement go away after postprocess, so we should consider them for possible range merges. This problem was uncovered when adding support for sub-byte payload ranges. Signed-off-by: Pablo Neira Ayuso --- diff --git a/src/netlink_delinearize.c b/src/netlink_delinearize.c index e5cee163..8cbabc34 100644 --- a/src/netlink_delinearize.c +++ b/src/netlink_delinearize.c @@ -1558,11 +1558,11 @@ static void stmt_expr_postprocess(struct rule_pp_ctx *ctx, struct stmt *prev) { enum ops op; - if (prev && ctx->stmt->ops->type == prev->ops->type && + expr_postprocess(ctx, &ctx->stmt->expr); + + if (prev && ctx->stmt && ctx->stmt->ops->type == prev->ops->type && expr_may_merge_range(ctx->stmt->expr, prev->expr, &op)) expr_postprocess_range(ctx, prev, op); - - expr_postprocess(ctx, &ctx->stmt->expr); } static void rule_parse_postprocess(struct netlink_parse_ctx *ctx, struct rule *rule)