summaryrefslogtreecommitdiffstats
path: root/src/kdc/main.c
diff options
context:
space:
mode:
authorTheodore Tso <tytso@mit.edu>1995-11-08 08:03:31 +0000
committerTheodore Tso <tytso@mit.edu>1995-11-08 08:03:31 +0000
commit4bc18b8d9dc28ab51e1eb52891ed3f72cd86fdda (patch)
tree9f8d98efc345fdb966145d60a036b3e4a023a3e1 /src/kdc/main.c
parent53bd3c35c2f895d9c766143b19ea293cdb9bcba0 (diff)
downloadkrb5-4bc18b8d9dc28ab51e1eb52891ed3f72cd86fdda.tar.gz
krb5-4bc18b8d9dc28ab51e1eb52891ed3f72cd86fdda.tar.xz
krb5-4bc18b8d9dc28ab51e1eb52891ed3f72cd86fdda.zip
* kdc_util.c (): Added new helper functions
dbentry_has_key_for_enctype(), dbentry_supports_enctype(), and select_session_keytype(). * kdc_preauth.c: Added support for the ENC_TIMESTAMP preauthentication scheme. * do_tgs_req.c (process_tgs_req): Fixed the keytype/enctype selection criteria for the server key, and the ticket session key. * do_as_req.c (process_as_req): Added calls to the kdc preauthentication verification routines. Fixed the keytype/enctype selection criteria for the client key, the server key, and the ticket session key. * main.c (finish_realm): Make sure all parts of the realm structure are freed properly. (main): Free the kcontext krb5_context. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@7058 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/kdc/main.c')
-rw-r--r--src/kdc/main.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/kdc/main.c b/src/kdc/main.c
index fa4572c8cb..b698a0fa3a 100644
--- a/src/kdc/main.c
+++ b/src/kdc/main.c
@@ -254,11 +254,22 @@ finish_realm(rdp)
free(rdp->realm_mpname);
if (rdp->realm_stash)
free(rdp->realm_stash);
+ if (rdp->realm_ports)
+ free(rdp->realm_ports);
+ if (rdp->realm_kstypes)
+ free(rdp->realm_kstypes);
if (rdp->realm_context) {
if (rdp->realm_mprinc)
krb5_free_principal(rdp->realm_context, rdp->realm_mprinc);
- if (rdp->realm_mkey.length && rdp->realm_mkey.contents)
- krb5_free_keyblock(rdp->realm_context, &rdp->realm_mkey);
+ if (rdp->realm_mkey.length && rdp->realm_mkey.contents) {
+ memset(rdp->realm_mkey.contents, 0, rdp->realm_mkey.length);
+ free(rdp->realm_mkey.contents);
+ }
+ if (rdp->realm_tgskey.length && rdp->realm_tgskey.contents) {
+ memset(rdp->realm_tgskey.contents, 0, rdp->realm_tgskey.length);
+ free(rdp->realm_tgskey.contents);
+ }
+ krb5_finish_key(rdp->realm_context, &rdp->realm_encblock);
krb5_db_fini(rdp->realm_context);
if (rdp->realm_tgsprinc)
krb5_free_principal(rdp->realm_context, rdp->realm_tgsprinc);
@@ -872,6 +883,7 @@ char *argv[];
krb5_klog_syslog(LOG_INFO, "shutting down");
krb5_klog_close(kdc_context);
finish_realms(argv[0]);
+ krb5_free_context(kcontext);
return errout;
}