From f7de358516d442bd8cb8e9afb880ddeb51922bf5 Mon Sep 17 00:00:00 2001 From: Ezra Peisach Date: Fri, 3 Jan 2003 16:28:45 +0000 Subject: * main.c: On exit, free more allocated memory, including: realm_tcp_ports data, kdc_realmlist, close the replay cache, and free the lookaside cache. * network.c (FREE_SET_DATA): Do not free a NULL pointer. * replay.c, kdc_util.h: Add kdc_free_lookaside() to clear the lookaside cache on shutdown - to search for memory leaks. * rtest.c (main): Do not allocate or free a NULL pointer. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@15080 dc483132-0cff-0310-8789-dd5450dbe970 --- src/kdc/main.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/kdc/main.c') diff --git a/src/kdc/main.c b/src/kdc/main.c index 67be475..c338b53 100644 --- a/src/kdc/main.c +++ b/src/kdc/main.c @@ -119,6 +119,8 @@ finish_realm(kdc_realm_t *rdp) free(rdp->realm_stash); if (rdp->realm_ports) free(rdp->realm_ports); + if (rdp->realm_tcp_ports) + free(rdp->realm_tcp_ports); if (rdp->realm_kstypes) free(rdp->realm_kstypes); if (rdp->realm_keytab) @@ -140,6 +142,7 @@ finish_realm(kdc_realm_t *rdp) krb5_free_context(rdp->realm_context); } memset((char *) rdp, 0, sizeof(*rdp)); + free(rdp); } /* @@ -737,8 +740,10 @@ finish_realms(char *prog) { int i; - for (i = 0; i < kdc_numrealms; i++) + for (i = 0; i < kdc_numrealms; i++) { finish_realm(kdc_realmlist[i]); + kdc_realmlist[i] = 0; + } } /* @@ -837,6 +842,14 @@ int main(int argc, char **argv) krb5_klog_syslog(LOG_INFO, "shutting down"); krb5_klog_close(kdc_context); finish_realms(argv[0]); + if (kdc_realmlist) + free(kdc_realmlist); +#ifdef USE_RCACHE + (void) krb5_rc_close(kdc_context, kdc_rcache); +#endif +#ifndef NOCACHE + kdc_free_lookaside(); +#endif krb5_free_context(kcontext); return errout; } -- cgit v1.1