summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Westphal <fw@strlen.de>2022-04-09 15:58:31 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2022-04-13 13:43:41 +0200
commit06db230895a8643e8ef42dbad0edcb69a069b75c (patch)
tree2cb44bb4b8c3ac00ea5e281c6731741a19d65b79
parent4c6681a7b2ee8e0d912fb2ba74ceb64ee9b16bfd (diff)
segtree: use correct byte order for 'element get'
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>
-rw-r--r--src/segtree.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/segtree.c b/src/segtree.c
index bed8bbcf..0135a074 100644
--- a/src/segtree.c
+++ b/src/segtree.c
@@ -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));