diff --git a/CHANGES b/CHANGES index 60b38dc31c..9af379669c 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +1074. [bug] Running out of memory in dump_rdataset() could + cause an assertion failure. [RT #1946] + 1073. [bug] The adb cache should also be space driven, max-adb-size. [RT #1915, #1938] diff --git a/lib/dns/masterdump.c b/lib/dns/masterdump.c index 5956dcce65..0d1e562c0b 100644 --- a/lib/dns/masterdump.c +++ b/lib/dns/masterdump.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: masterdump.c,v 1.60 2001/10/23 01:49:32 gson Exp $ */ +/* $Id: masterdump.c,v 1.61 2001/10/25 23:18:05 gson Exp $ */ #include @@ -717,11 +717,11 @@ dump_rdataset(isc_mem_t *mctx, dns_name_t *name, dns_rdataset_t *rdataset, if (result != ISC_R_NOSPACE) break; - isc_mem_put(mctx, buffer->base, buffer->length); newlength = buffer->length * 2; newmem = isc_mem_get(mctx, newlength); if (newmem == NULL) return (ISC_R_NOMEMORY); + isc_mem_put(mctx, buffer->base, buffer->length); isc_buffer_init(buffer, newmem, newlength); } if (result != ISC_R_SUCCESS)