aboutsummaryrefslogtreecommitdiff
path: root/src/kdc/main.c
diff options
context:
space:
mode:
authorEzra Peisach <epeisach@mit.edu>2003-01-03 16:28:45 +0000
committerEzra Peisach <epeisach@mit.edu>2003-01-03 16:28:45 +0000
commitf7de358516d442bd8cb8e9afb880ddeb51922bf5 (patch)
tree808ee9c5aa7e441817b5af66a1927b286bef8daa /src/kdc/main.c
parentd88ee5d0f84679bc05e28c6e3a80cfb57a947210 (diff)
downloadkrb5-f7de358516d442bd8cb8e9afb880ddeb51922bf5.zip
krb5-f7de358516d442bd8cb8e9afb880ddeb51922bf5.tar.gz
krb5-f7de358516d442bd8cb8e9afb880ddeb51922bf5.tar.bz2
* 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
Diffstat (limited to 'src/kdc/main.c')
-rw-r--r--src/kdc/main.c15
1 files changed, 14 insertions, 1 deletions
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;
}