From 653bb59432e95dcc6d99bd02a3189e8037ab5ad3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Tue, 24 Oct 2006 23:29:34 +0000 Subject: [PATCH] Try free all resources. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@18890 ec53bebd-3082-4978-b11e-865c3cabbd6b --- appl/gssmask/gssmask.c | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/appl/gssmask/gssmask.c b/appl/gssmask/gssmask.c index 4803d2fb3..c8f1e23b9 100644 --- a/appl/gssmask/gssmask.c +++ b/appl/gssmask/gssmask.c @@ -283,6 +283,16 @@ HandleOP(GetVersionInfo) static int HandleOP(GoodBye) { + struct handle *h = c->handles; + int i = 0; + + while (h) { + h = h->next; + i++; + } + + logmessage(c, __FILE__, __LINE__, 0, "did not toast all resources: %d", i); + return 1; } @@ -929,6 +939,19 @@ create_client(int fd, int port, const char *moniker) return c; } +static void +free_client(struct client *c) +{ + while(c->handles) + del_handle(&c->handles, c->handles->idx); + + free(c->moniker); + krb5_storage_free(c->sock); + if (c->logging) + krb5_storage_free(c->logging); + free(c); +} + static void * handleServer(void *ptr) @@ -957,9 +980,6 @@ handleServer(void *ptr) if ((handler->func)(handler->op, c)) break; } - krb5_storage_free(c->sock); - if (c->logging) - krb5_storage_free(c->logging); return NULL; } @@ -1049,6 +1069,8 @@ main(int argc, char **argv) /* close(0); */ handleServer(c); + + free_client(c); } krb5_free_context(context);