From d468db05b3aea6d745ee188258e59da11510d637 Mon Sep 17 00:00:00 2001 From: Andreas Gustafsson Date: Tue, 18 Jan 2000 18:07:07 +0000 Subject: [PATCH] client manager cleanup could access freed memory --- bin/named/client.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/bin/named/client.c b/bin/named/client.c index 75db7fd15a..a58808d9ea 100644 --- a/bin/named/client.c +++ b/bin/named/client.c @@ -113,7 +113,8 @@ release_quotas(ns_client_t *client) { static void maybe_free(ns_client_t *client) { isc_boolean_t need_clientmgr_destroy = ISC_FALSE; - + ns_clientmgr_t *manager; + REQUIRE(NS_CLIENT_VALID(client)); /* @@ -181,7 +182,7 @@ maybe_free(ns_client_t *client) { if (client->task != NULL) isc_task_detach(&client->task); if (client->manager != NULL) { - ns_clientmgr_t *manager = client->manager; + manager = client->manager; LOCK(&manager->lock); INSIST(manager->nclients > 0); @@ -200,7 +201,7 @@ maybe_free(ns_client_t *client) { isc_mem_put(client->mctx, client, sizeof *client); if (need_clientmgr_destroy) - clientmgr_destroy(client->manager); + clientmgr_destroy(manager); } /*