diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2022-11-05 16:51:10 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2022-11-05 16:54:26 +0100 |
commit | a61df019861997df76159b780070e2a09038798f (patch) | |
tree | 5ff3ec90af0b3eacdd6f74694618b2714bc50315 /src | |
parent | c8a3c669499d169fef8c1e89b8d2d909e5ecd023 (diff) |
optimize: handle prefix and range when merging into set + concatenation
The following ruleset fails to be merged using set + concatenation:
meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.3.0/24 accept
meta iifname eth1 ip saddr 1.1.1.2 ip daddr 2.2.4.0-2.2.4.10 accept
hitting the following assertion:
nft: optimize.c:585: __merge_concat_stmts: Assertion `0' failed.
Abort
This patch also updates tests/shell.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/optimize.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/optimize.c b/src/optimize.c index 180a7d55..09013efc 100644 --- a/src/optimize.c +++ b/src/optimize.c @@ -578,6 +578,8 @@ static void __merge_concat_stmts(const struct optimize_ctx *ctx, uint32_t i, break; case EXPR_SYMBOL: case EXPR_VALUE: + case EXPR_PREFIX: + case EXPR_RANGE: clone = expr_clone(stmt_a->expr->right); compound_expr_add(concat, clone); break; |