From: W.C.A. Wijngaards Date: Fri, 17 Apr 2026 11:27:41 +0000 (+0200) Subject: - Fix ttl comparisons in rdata_copy for 32bit signed or unsigned. X-Git-Tag: release-1.25.0rc1~20 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=84ac7e1b58ecb36b058ada550787e6360b80e1ab;p=thirdparty%2Funbound.git - Fix ttl comparisons in rdata_copy for 32bit signed or unsigned. --- diff --git a/doc/Changelog b/doc/Changelog index 33541ca39..78fe93c99 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -13,6 +13,7 @@ - Fix compat/gmtime_r old style definition syntax. - Fix to increase size of the buffer for the win_svc reportev log function. + - Fix ttl comparisons in rdata_copy for 32bit signed or unsigned. 16 April 2026: Yorgos - Merge #1406: Introduce new 'tls-protocols' configuration option. diff --git a/util/data/msgreply.c b/util/data/msgreply.c index dc82a7dec..e0c4768a6 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -261,25 +261,25 @@ rdata_copy(sldns_buffer* pkt, struct packed_rrset_data* data, uint8_t* to, if(ttl > soa_find_minttl(rr)) ttl = soa_find_minttl(rr); if(!SERVE_ORIGINAL_TTL) { /* If MIN_NEG_TTL is configured skip setting MIN_TTL */ - if(MIN_NEG_TTL <= 0 && ttl < MIN_TTL) { - ttl = MIN_TTL; + if(MIN_NEG_TTL <= 0 && ttl < (uint32_t)MIN_TTL) { + ttl = (uint32_t)MIN_TTL; } - if(ttl > MAX_TTL) ttl = MAX_TTL; + if(ttl > (uint32_t)MAX_TTL) ttl = (uint32_t)MAX_TTL; } /* MAX_NEG_TTL overrides the min and max ttl of everything * else; it is for a more specific record */ - if(ttl > MAX_NEG_TTL) ttl = MAX_NEG_TTL; + if(ttl > (uint32_t)MAX_NEG_TTL) ttl = (uint32_t)MAX_NEG_TTL; /* MIN_NEG_TTL overrides the min and max ttl of everything * else if configured; it is for a more specific record */ - if(MIN_NEG_TTL > 0 && ttl < MIN_NEG_TTL) { - ttl = MIN_NEG_TTL; + if(MIN_NEG_TTL > 0 && ttl < (uint32_t)MIN_NEG_TTL) { + ttl = (uint32_t)MIN_NEG_TTL; } } else if(!SERVE_ORIGINAL_TTL) { - if(ttl < MIN_TTL) ttl = MIN_TTL; - if(ttl > MAX_TTL) ttl = MAX_TTL; + if(ttl < (uint32_t)MIN_TTL) ttl = (uint32_t)MIN_TTL; + if(ttl > (uint32_t)MAX_TTL) ttl = (uint32_t)MAX_TTL; } - if(ttl < data->ttl) - data->ttl = ttl; + if((time_t)ttl < data->ttl) + data->ttl = (time_t)ttl; /* We have concluded the TTL checks */ *rr_ttl = (time_t)ttl;