diff options
author | Pablo Neira Ayuso <pablo@netfilter.org> | 2019-10-09 11:54:32 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2019-10-09 12:32:06 +0200 |
commit | a4ec053812610400b7a9e6c060d8b7589dedd5b1 (patch) | |
tree | bad46699b31fc8bdcbb52ba6d087863c6eabf7f5 /src | |
parent | 998142c71d095d79488495ea545a704213fa0ba0 (diff) |
segtree: always close interval in non-anonymous sets
Skip this optimization for non-anonymous sets, otherwise, element
deletion breaks.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src')
-rw-r--r-- | src/segtree.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/segtree.c b/src/segtree.c index eff0653a..5d6ecd4f 100644 --- a/src/segtree.c +++ b/src/segtree.c @@ -496,7 +496,8 @@ static void segtree_linearize(struct list_head *list, const struct set *set, * (prev_right, ei_left). */ mpz_add_ui(p, prev->right, 1); - if (mpz_cmp(p, ei->left) < 0) { + if (mpz_cmp(p, ei->left) < 0 || + !(set->flags & NFT_SET_ANONYMOUS)) { mpz_sub_ui(q, ei->left, 1); nei = ei_alloc(p, q, NULL, EI_F_INTERVAL_END); list_add_tail(&nei->list, list); |