diff --git a/CHANGES b/CHANGES index 555944c1ae..e0e40fab04 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,5 @@ +3452. [bug] Accept duplicate singlton records. [RT #32329] + 3451. [port] Increase per thread stack size from 64K to 1M. [RT #32230] diff --git a/lib/dns/message.c b/lib/dns/message.c index ef0bf6591b..cd6320772c 100644 --- a/lib/dns/message.c +++ b/lib/dns/message.c @@ -1441,8 +1441,15 @@ getsection(isc_buffer_t *source, dns_message_t *msg, dns_decompress_t *dctx, * the opcode is an update, or the type search is skipped. */ if (result == ISC_R_SUCCESS) { - if (dns_rdatatype_issingleton(rdtype)) - DO_FORMERR; + if (dns_rdatatype_issingleton(rdtype)) { + dns_rdata_t *first; + dns_rdatalist_fromrdataset(rdataset, + &rdatalist); + first = ISC_LIST_HEAD(rdatalist->rdata); + INSIST(first != NULL); + if (dns_rdata_compare(rdata, first) != 0) + DO_FORMERR; + } } if (result == ISC_R_NOTFOUND) {