summaryrefslogtreecommitdiffstats
path: root/src/netlink_delinearize.c
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2015-12-05 20:04:22 +0100
committerPablo Neira Ayuso <pablo@netfilter.org>2015-12-14 20:32:55 +0100
commit564b0e7c13f98b9ad054058137b4c0bb61bd46b4 (patch)
tree2f0aea29495987aa4e9b64f26228e28beb5f1a82 /src/netlink_delinearize.c
parent4a9a38727957731e56b5302960da5ef1e0275d61 (diff)
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 <pablo@netfilter.org>
Diffstat (limited to 'src/netlink_delinearize.c')
-rw-r--r--src/netlink_delinearize.c6
1 files changed, 3 insertions, 3 deletions
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)