]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
segtree: use correct byte order for 'element get'
authorFlorian Westphal <fw@strlen.de>
Sat, 9 Apr 2022 13:58:31 +0000 (15:58 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 13 Apr 2022 11:43:41 +0000 (13:43 +0200)
Fails when the argument / set contains strings: we need to use
host byte order if element has string base type.

Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/segtree.c

index bed8bbcf0c8e7f60fae2868611fa81461661d229..0135a07492b060c09e18f4752aae37f44f7cedf5 100644 (file)
@@ -720,6 +720,7 @@ static void set_elem_add(const struct set *set, struct expr *init, mpz_t value,
 
 struct expr *get_set_intervals(const struct set *set, const struct expr *init)
 {
+       enum byteorder byteorder = get_key_byteorder(set->key);
        struct expr *new_init;
        mpz_t low, high;
        struct expr *i;
@@ -733,7 +734,7 @@ struct expr *get_set_intervals(const struct set *set, const struct expr *init)
                switch (i->key->etype) {
                case EXPR_VALUE:
                        set_elem_add(set, new_init, i->key->value,
-                                    i->flags, i->byteorder);
+                                    i->flags, byteorder);
                        break;
                case EXPR_CONCAT:
                        compound_expr_add(new_init, expr_clone(i));