diff options
author | Florian Westphal <fw@strlen.de> | 2022-04-09 15:58:25 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2022-04-13 13:43:29 +0200 |
commit | ae7d32fc36d4e8714b392670ff2fd6af8135a322 (patch) | |
tree | f67378fa5527534192052dd29c3daf7d5266a817 /src/expression.c | |
parent | d2b2398449673b82636c335e9293c5199cadad2f (diff) |
evaluate: keep prefix expression length
Else, range_expr_value_high() will see a 0 length when doing:
mpz_init_bitmask(tmp, expr->len - expr->prefix_len);
This wasn't a problem so far because prefix expressions generated
from "string*" were never passed down to the prefix->range conversion
functions.
Signed-off-by: Florian Westphal <fw@strlen.de>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/expression.c')
-rw-r--r-- | src/expression.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/src/expression.c b/src/expression.c index 9c9a7ced..deb649e1 100644 --- a/src/expression.c +++ b/src/expression.c @@ -1465,6 +1465,7 @@ void range_expr_value_high(mpz_t rop, const struct expr *expr) return mpz_set(rop, expr->value); case EXPR_PREFIX: range_expr_value_low(rop, expr->prefix); + assert(expr->len >= expr->prefix_len); mpz_init_bitmask(tmp, expr->len - expr->prefix_len); mpz_add(rop, rop, tmp); mpz_clear(tmp); |