From fa9710ea806eaca54719ad439e15240aa57859bf Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Tue, 7 Jun 2005 01:42:23 +0000 Subject: [PATCH] 1861. [bug] dig could trigger a INSIST on certain malformed responses. [RT #14801] --- CHANGES | 3 +++ lib/dns/message.c | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 9e53103874..187e2834e9 100644 --- a/CHANGES +++ b/CHANGES @@ -13,6 +13,9 @@ 1863. [bug] rrset-order "fixed" error messages not complete. +1861. [bug] dig could trigger a INSIST on certain malformed + responses. [RT #14801] + 1858. [bug] The flush-zones-on-shutdown option wasn't being parsed. [RT #14686] diff --git a/lib/dns/message.c b/lib/dns/message.c index c072e0d335..d4b2e1962f 100644 --- a/lib/dns/message.c +++ b/lib/dns/message.c @@ -15,7 +15,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: message.c,v 1.194.2.10.2.19 2005/03/17 03:58:30 marka Exp $ */ +/* $Id: message.c,v 1.194.2.10.2.20 2005/06/07 01:42:23 marka Exp $ */ /*** *** Imports @@ -1476,6 +1476,13 @@ getsection(isc_buffer_t *source, dns_message_t *msg, dns_decompress_t *dctx, free_name = ISC_FALSE; } + if (seen_problem) { + if (free_name) + isc_mempool_put(msg->namepool, name); + if (free_rdataset) + isc_mempool_put(msg->rdspool, rdataset); + free_name = free_rdataset = ISC_FALSE; + } INSIST(free_name == ISC_FALSE); INSIST(free_rdataset == ISC_FALSE); }