From 543da41dbb7ee474c633c01ed4e1bc01908ba26b Mon Sep 17 00:00:00 2001 From: Michael Graff Date: Mon, 14 Feb 2000 22:54:03 +0000 Subject: [PATCH] fix a memory leak I just created. --- bin/lwresd/process_gnba.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/bin/lwresd/process_gnba.c b/bin/lwresd/process_gnba.c index d9eaf343fc..2f9de7c7a4 100644 --- a/bin/lwresd/process_gnba.c +++ b/bin/lwresd/process_gnba.c @@ -89,28 +89,28 @@ byaddr_done(isc_task_t *task, isc_event_t *event) b = client->recv_buffer; result = dns_name_totext(name, ISC_TRUE, &client->recv_buffer); + if (result != ISC_R_SUCCESS) + goto out; DP(50, "***** Found name %.*s", client->recv_buffer.used - b.used, (char *)(b.base) + b.used); - if (result != ISC_R_SUCCESS) - goto out; if (gnba->realname == NULL) { gnba->realname = (char *)(b.base) + b.used; gnba->realnamelen = client->recv_buffer.used - b.used; } else { naliases = gnba->naliases; - if (naliases < LWRES_MAX_ALIASES) { - gnba->aliases[naliases] = - (char *)(b.base) + b.used; - gnba->aliaslen[naliases] = - client->recv_buffer.used - b.used; - gnba->naliases++; - } + if (naliases >= LWRES_MAX_ALIASES) + break; + gnba->aliases[naliases] = (char *)(b.base) + b.used; + gnba->aliaslen[naliases] = + client->recv_buffer.used - b.used; + gnba->naliases++; } - name = ISC_LIST_NEXT(name, link); + name = ISC_LIST_NEXT(name, link); } dns_byaddr_destroy(&client->byaddr); + isc_event_free(&event); /* * Render the packet. @@ -122,12 +122,11 @@ byaddr_done(isc_task_t *task, isc_event_t *event) lwres = lwres_gnbaresponse_render(client->clientmgr->lwctx, gnba, &client->pkt, &lwb); - - hexdump("Sending to client", lwb.base, lwb.used); - if (lwres != LWRES_R_SUCCESS) goto out; + hexdump("Sending to client", lwb.base, lwb.used); + r.base = lwb.base; r.length = lwb.used; client->sendbuf = r.base;