From: Mark Andrews Date: Mon, 7 Jan 2013 23:58:42 +0000 (+1100) Subject: 3452. [bug] Accept duplicate singlton records. [RT #32329] X-Git-Tag: v9.10.0a1~612 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=c9cecf7bb509b1c860d0b6deba7fccd85b9feb68;p=thirdparty%2Fbind9.git 3452. [bug] Accept duplicate singlton records. [RT #32329] --- diff --git a/CHANGES b/CHANGES index 555944c1ae1..e0e40fab045 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 ef0bf6591b5..cd6320772ce 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) {