]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Fix ttl comparisons in rdata_copy for 32bit signed or unsigned.
authorW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Fri, 17 Apr 2026 11:27:41 +0000 (13:27 +0200)
committerW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Fri, 17 Apr 2026 11:27:41 +0000 (13:27 +0200)
doc/Changelog
util/data/msgreply.c

index 33541ca39f256c8d0c9b83bb5c70a6584a2fb839..78fe93c99576e5059537857fa5fa4404c1464297 100644 (file)
@@ -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.
index dc82a7dec7756360953466b3a1f5bc8223972f18..e0c4768a6127b29d5fd0000712bbad1d1240d98f 100644 (file)
@@ -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;