Written-by: Tomas Mraz Reviewed-by: Adam Tkac diff -up bind-9.5.0a6/lib/dns/resolver.c.badfree bind-9.5.0a6/lib/dns/resolver.c --- bind-9.5.0a6/lib/dns/resolver.c.badfree 2007-06-19 01:47:41.000000000 +0200 +++ bind-9.5.0a6/lib/dns/resolver.c 2007-09-05 16:20:21.000000000 +0200 @@ -7455,17 +7455,17 @@ dns_resolver_createdispatchpool(dns_reso return (result); cleanup: - for (i = 0; i < ndisps; i++) { - if (res->dispatchv4pool[i] != NULL) - dns_dispatch_detach(&res->dispatchv4pool[i]); - if (res->dispatchv6pool[i] != NULL) - dns_dispatch_detach(&res->dispatchv6pool[i]); - } if (res->dispatchv4pool != NULL) { + for (i = 0; i < ndisps; i++) + if (res->dispatchv4pool[i] != NULL) + dns_dispatch_detach(&res->dispatchv4pool[i]); isc_mem_put(res->mctx, res->dispatchv4pool, sizeof(dns_dispatch_t *) * ndisps); } if (res->dispatchv6pool != NULL) { + for (i = 0; i < ndisps; i++) + if (res->dispatchv6pool[i] != NULL) + dns_dispatch_detach(&res->dispatchv6pool[i]); isc_mem_put(res->mctx, res->dispatchv6pool, sizeof(dns_dispatch_t *) * ndisps); }