Commit 9d4e3ec0c2 for bind
commit 9d4e3ec0c28c40920874548a8ef9ef110a546f78
Author: Alessio Podda <alessio@isc.org>
Date: Tue Sep 1 22:56:00 2026 +0200
More precise check for too many records
Make the check for too many records not approximate.
diff --git a/lib/dns/rdatavec.c b/lib/dns/rdatavec.c
index 7f41725e12..72fcc10288 100644
--- a/lib/dns/rdatavec.c
+++ b/lib/dns/rdatavec.c
@@ -422,16 +422,15 @@ dns_rdatavec_merge(dns_vecheader_t *oheader, dns_vecheader_t *nheader,
ocount = oheader->count;
ncount = nheader->count;
- if (maxrrperset > 0 && ocount + ncount > maxrrperset) {
- return DNS_R_TOOMANYRECORDS;
- }
-
vecmerge_first(&iter, oheader, nheader, rdclass);
while (vecmerge_next(&iter, &rdata)) {
rlength += sizeof(uint16_t) + rdata.length +
(type == dns_rdatatype_rrsig);
tcount++;
+ if (maxrrperset > 0 && tcount > maxrrperset) {
+ return DNS_R_TOOMANYRECORDS;
+ }
}
ndup = ocount + ncount - tcount;