From 99a8d30559834dc12bd80f4f164fa6375f73cb62 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Tue, 5 Jun 2001 23:43:15 +0000 Subject: [PATCH] 860. [func] Drop cross class glue in zone transfers. --- CHANGES | 1 + lib/dns/xfrin.c | 9 ++++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index cfc8c17c4b..d9f9454a46 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,4 @@ + 860. [func] Drop cross class glue in zone transfers. 859. [bug] Cache cleaning now won't swamp the CPU if there is a persistent overlimit condition. diff --git a/lib/dns/xfrin.c b/lib/dns/xfrin.c index a2eeab210b..e28fe8068a 100644 --- a/lib/dns/xfrin.c +++ b/lib/dns/xfrin.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: xfrin.c,v 1.121 2001/06/04 19:33:16 tale Exp $ */ +/* $Id: xfrin.c,v 1.122 2001/06/05 23:43:15 marka Exp $ */ #include @@ -528,6 +528,13 @@ xfr_rr(dns_xfrin_ctx_t *xfr, dns_name_t *name, isc_uint32_t ttl, break; case XFRST_AXFR: + /* + * Old BIND's sent cross class A records for non IN classes. + */ + if (rdata->type == dns_rdatatype_a && + rdata->rdclass != xfr->rdclass && + xfr->rdclass != dns_rdataclass_in) + break; CHECK(axfr_putdata(xfr, DNS_DIFFOP_ADD, name, ttl, rdata)); if (rdata->type == dns_rdatatype_soa) { CHECK(axfr_commit(xfr));