]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- rpz-zone-load, handle alloc failures from dname_rdata_to_str.
authorW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Wed, 28 Jan 2026 12:58:09 +0000 (13:58 +0100)
committerW.C.A. Wijngaards <wouter@nlnetlabs.nl>
Wed, 28 Jan 2026 12:58:09 +0000 (13:58 +0100)
respip/respip.c
services/localzone.c
services/rpz.c

index 32cf98a72a63381a17760cc6635c0d2298a9fc26..83603bb42b6b0e0c48e9d30f47b575c721fecc2a 100644 (file)
@@ -305,7 +305,7 @@ respip_enter_rr_wol(struct regional* region, struct resp_addr* raddr,
                char* rrstr = dname_rdata_to_str(NULL, 0, rrtype,
                        rrclass, ttl, rdata_wol, rdata_len);
                log_err("CNAME response-ip data (%s) can not co-exist with other "
-                       "response-ip data for netblock %s", rrstr, netblockstr);
+                       "response-ip data for netblock %s", (rrstr?rrstr:"<out of memory>"), netblockstr);
                free(rrstr);
                return 0;
        } else if (raddr->data &&
@@ -313,7 +313,7 @@ respip_enter_rr_wol(struct regional* region, struct resp_addr* raddr,
                char* rrstr = dname_rdata_to_str(NULL, 0, rrtype,
                        rrclass, ttl, rdata_wol, rdata_len);
                log_err("response-ip data (%s) can not be added; CNAME response-ip "
-                       "data already in place for netblock %s", rrstr, netblockstr);
+                       "data already in place for netblock %s", (rrstr?rrstr:"<out of memory>"), netblockstr);
                free(rrstr);
                return 0;
        } else if((rrtype != LDNS_RR_TYPE_CNAME) &&
@@ -322,7 +322,7 @@ respip_enter_rr_wol(struct regional* region, struct resp_addr* raddr,
                char* rrstr = dname_rdata_to_str(NULL, 0, rrtype,
                        rrclass, ttl, rdata_wol, rdata_len);
                log_err("response-ip data %s record type does not correspond "
-                       "to netblock %s address family", rrstr, netblockstr);
+                       "to netblock %s address family", (rrstr?rrstr:"<out of memory>"), netblockstr);
                free(rrstr);
                return 0;
        }
index 18d8a64f0ba3dffb06e998dde02f30c26055a1ff..cd15b0f24bea7cc26dc023b43a432c7c9bc11f6f 100644 (file)
@@ -697,7 +697,7 @@ local_zone_enter_rr_wol(struct local_zone* z, uint8_t* nm, size_t nmlen,
                        char* rrstr = dname_rdata_to_str(nm, nmlen, rrtype,
                                rrclass, ttl, rdata_wol, rdata_len);
                        log_err("local-data '%s' in redirect zone must not "
-                               "coexist with %s local-data", rrstr, othertype);
+                               "coexist with %s local-data", (rrstr?rrstr:"<out of memory>"), othertype);
                        free(rrstr);
                        return 0;
                }
@@ -722,7 +722,7 @@ local_zone_enter_rr_wol(struct local_zone* z, uint8_t* nm, size_t nmlen,
        if(rr_is_duplicate_wol(pd, rdata_wol, rdata_len)) {
                char* rrstr = dname_rdata_to_str(nm, nmlen, rrtype,
                        rrclass, ttl, rdata_wol, rdata_len);
-               verbose(VERB_ALGO, "ignoring duplicate RR: %s", rrstr);
+               verbose(VERB_ALGO, "ignoring duplicate RR: %s", (rrstr?rrstr:"<out of memory>"));
                free(rrstr);
                return 1;
        }
@@ -730,7 +730,7 @@ local_zone_enter_rr_wol(struct local_zone* z, uint8_t* nm, size_t nmlen,
                char* rrstr = dname_rdata_to_str(nm, nmlen, rrtype,
                        rrclass, ttl, rdata_wol, rdata_len);
                log_warn("RRset %s has more than %d records, record ignored",
-                       rrstr, LOCALZONE_RRSET_COUNT_MAX);
+                       (rrstr?rrstr:"<out of memory>"), LOCALZONE_RRSET_COUNT_MAX);
                free(rrstr);
                return 1;
        }
index 43ae97328239d6fa6ee4e4d858d0d49bdfc17129..ed68e5f0074dbb0a52432036423c8515c5f3768e 100644 (file)
@@ -711,7 +711,7 @@ rpz_insert_local_zones_trigger(struct local_zones* lz, uint8_t* dname,
                        if(duplicate) {
                                char* rrstr = dname_rdata_to_str(dname, dnamelen, rrtype,
                                        rrclass, ttl, rdata, rdata_len);
-                               verbose(VERB_ALGO, "rpz: skipping duplicate record: %s", rrstr);
+                               verbose(VERB_ALGO, "rpz: skipping duplicate record: %s", (rrstr?rrstr:"<out of memory>"));
                                free(rrstr);
                                free(dname);
                                lock_rw_unlock(&lz->lock);
@@ -732,7 +732,7 @@ rpz_insert_local_zones_trigger(struct local_zones* lz, uint8_t* dname,
        if(z != NULL && a != RPZ_LOCAL_DATA_ACTION) {
                char* rrstr = dname_rdata_to_str(dname, dnamelen, rrtype,
                        rrclass, ttl, rdata, rdata_len);
-               verbose(VERB_ALGO, "rpz: skipping duplicate record: %s", rrstr);
+               verbose(VERB_ALGO, "rpz: skipping duplicate record: %s", (rrstr?rrstr:"<out of memory>"));
                free(rrstr);
                free(dname);
                lock_rw_unlock(&lz->lock);
@@ -982,7 +982,7 @@ rpz_clientip_insert_trigger_rr(struct clientip_synthesized_rrset* set, struct so
                rrstr = dname_rdata_to_str(NULL, 0, rrtype, rrclass, ttl,
                        rdata, rdata_len);
                log_err("rpz: unexpected: unable to insert %s: %s/%d %s",
-                       "client ip address", as, net, rrstr);
+                       "client ip address", as, net, (rrstr?rrstr:"<out of memory>"));
                free(rrstr);
                return 0;
        }