]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
intervals: Simplify element sanity checks
authorPhil Sutter <phil@nwl.cc>
Thu, 14 Apr 2022 11:39:24 +0000 (13:39 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Thu, 14 Apr 2022 15:16:27 +0000 (17:16 +0200)
Since setelem_delete() assigns to 'prev' pointer only if it doesn't have
EXPR_F_REMOVE flag set, there is no need to check that flag in called
functions.

Fixes: 3e8d934e4f722 ("intervals: support to partial deletion with automerge")
Signed-off-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/intervals.c

index cdda9e38ca5e37def070e6f02b906ddb2548d909..a8fada9ba079b1528616904a0bd737759be4d3b7 100644 (file)
@@ -265,14 +265,12 @@ static void remove_elem(struct expr *prev, struct set *set, struct expr *purge)
 {
        struct expr *clone;
 
-       if (!(prev->flags & EXPR_F_REMOVE)) {
-               if (prev->flags & EXPR_F_KERNEL) {
-                       clone = expr_clone(prev);
-                       list_move_tail(&clone->list, &purge->expressions);
-               } else {
-                       list_del(&prev->list);
-                       expr_free(prev);
-               }
+       if (prev->flags & EXPR_F_KERNEL) {
+               clone = expr_clone(prev);
+               list_move_tail(&clone->list, &purge->expressions);
+       } else {
+               list_del(&prev->list);
+               expr_free(prev);
        }
 }
 
@@ -360,18 +358,15 @@ static int setelem_adjust(struct set *set, struct expr *add, struct expr *purge,
 {
        if (mpz_cmp(prev_range->low, range->low) == 0 &&
            mpz_cmp(prev_range->high, range->high) > 0) {
-               if (!(prev->flags & EXPR_F_REMOVE) &&
-                   i->flags & EXPR_F_REMOVE)
+               if (i->flags & EXPR_F_REMOVE)
                        adjust_elem_left(set, prev, i, add, purge);
        } else if (mpz_cmp(prev_range->low, range->low) < 0 &&
                   mpz_cmp(prev_range->high, range->high) == 0) {
-               if (!(prev->flags & EXPR_F_REMOVE) &&
-                   i->flags & EXPR_F_REMOVE)
+               if (i->flags & EXPR_F_REMOVE)
                        adjust_elem_right(set, prev, i, add, purge);
        } else if (mpz_cmp(prev_range->low, range->low) < 0 &&
                   mpz_cmp(prev_range->high, range->high) > 0) {
-               if (!(prev->flags & EXPR_F_REMOVE) &&
-                   i->flags & EXPR_F_REMOVE)
+               if (i->flags & EXPR_F_REMOVE)
                        split_range(set, prev, i, add, purge);
        } else {
                return -1;
@@ -417,8 +412,7 @@ static int setelem_delete(struct list_head *msgs, struct set *set,
 
                if (mpz_cmp(prev_range.low, range.low) == 0 &&
                    mpz_cmp(prev_range.high, range.high) == 0) {
-                       if (!(prev->flags & EXPR_F_REMOVE) &&
-                           i->flags & EXPR_F_REMOVE) {
+                       if (i->flags & EXPR_F_REMOVE) {
                                list_move_tail(&prev->list, &purge->expressions);
                                list_del(&i->list);
                                expr_free(i);