From: Phil Sutter Date: Tue, 26 May 2026 13:49:58 +0000 (+0200) Subject: intervals: Fix for inconsistent union field use X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ba90672b190737d72723d0ec6ccfaaa46b4e7cd0;p=thirdparty%2Fnftables.git intervals: Fix for inconsistent union field use Reported by a static code analyzer: key->value belongs to a different struct in the embedded anonymous union than key->range.* which is accessed elsewhere in that function. It is correct in that the function asserts key->etype to be EXPR_RANGE_VALUE, so key->value is not necessarily valid (it just happens to match key->range.low's offset. Fixes: 91dc281a82ea6 ("src: rework singleton interval transformation to reduce memory consumption") Signed-off-by: Phil Sutter --- diff --git a/src/intervals.c b/src/intervals.c index c9e278b2..d6af7cbc 100644 --- a/src/intervals.c +++ b/src/intervals.c @@ -832,7 +832,8 @@ int setelem_to_interval(const struct set *set, struct expr *elem, if (adjacent) return 0; - else if (!mpz_cmp_ui(key->value, 0) && elem->key->flags & EXPR_F_INTERVAL_END) { + else if (!mpz_cmp_ui(key->range.low, 0) && + elem->key->flags & EXPR_F_INTERVAL_END) { low->key->flags |= EXPR_F_INTERVAL_END; return 0; } else if (mpz_scan0(key->range.high, 0) == set->key->len) {