diff --git a/CHANGES b/CHANGES index c55d71ee42..96f749d3bb 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ --- 9.0.0rc2 released --- + 372. [bug] Deal with Microsoft DNS servers appending two bytes of + garbage to zone transfer requests. + 371. [bug] At high debug levels, doing an outgoing zone transfer of a very large RRset could cause an assertion failure during logging. diff --git a/lib/dns/message.c b/lib/dns/message.c index 7d6cdb6be2..6462897dcf 100644 --- a/lib/dns/message.c +++ b/lib/dns/message.c @@ -15,7 +15,7 @@ * SOFTWARE. */ -/* $Id: message.c,v 1.131.2.5 2000/07/27 17:18:46 bwelling Exp $ */ +/* $Id: message.c,v 1.131.2.6 2000/08/07 22:07:09 gson Exp $ */ /*** *** Imports @@ -30,6 +30,7 @@ #include #include +#include #include #include #include @@ -1484,8 +1485,15 @@ dns_message_parse(dns_message_t *msg, isc_buffer_t *source, return (ret); isc_buffer_remainingregion(source, &r); - if (r.length != 0) - return (DNS_R_FORMERR); + if (r.length != 0) { + if (r.length == 2 && r.base[0] == 'M' && r.base[1] == 'S') { + isc_log_write(dns_lctx, ISC_LOGCATEGORY_GENERAL, + DNS_LOGMODULE_MESSAGE, ISC_LOG_INFO, + "message has nonstandard Microsoft tag"); + } else { + return (DNS_R_FORMERR); + } + } if (msg->tsig != NULL || msg->tsigkey != NULL || msg->sig0 != NULL) { msg->saved = isc_mem_get(msg->mctx, sizeof(isc_region_t));