From 3442622bf0e205fa829520868909a8b8d0771e9f Mon Sep 17 00:00:00 2001 From: Will Fiveash Date: Thu, 5 Feb 2009 20:57:09 +0000 Subject: deal with memleaks in migrate mkey project Ken R. told me that Coverity found several potential memleaks introduced by the mkey migration project. This addresses those leaks and tweaks the code formatting in a few places. ticket: 6371 Version_Reported: 1.7 Target_Version: 1.7 Tags: pullup git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@21900 dc483132-0cff-0310-8789-dd5450dbe970 --- src/lib/kdb/kdb5.c | 13 ++++++++----- src/lib/kdb/kdb_default.c | 4 +++- 2 files changed, 11 insertions(+), 6 deletions(-) (limited to 'src/lib') diff --git a/src/lib/kdb/kdb5.c b/src/lib/kdb/kdb5.c index 442c28f27..b17e8d190 100644 --- a/src/lib/kdb/kdb5.c +++ b/src/lib/kdb/kdb5.c @@ -115,11 +115,13 @@ krb5_dbe_free_key_data_contents(krb5_context context, krb5_key_data *key) { int i, idx; - idx = (key->key_data_ver == 1 ? 1 : 2); - for (i = 0; i < idx; i++) { - if (key->key_data_contents[i]) { - zap(key->key_data_contents[i], key->key_data_length[i]); - free(key->key_data_contents[i]); + if (key) { + idx = (key->key_data_ver == 1 ? 1 : 2); + for (i = 0; i < idx; i++) { + if (key->key_data_contents[i]) { + zap(key->key_data_contents[i], key->key_data_length[i]); + free(key->key_data_contents[i]); + } } } return; @@ -2383,6 +2385,7 @@ krb5_dbe_lookup_mkey_aux(krb5_context context, if (new_data->latest_mkey.key_data_contents[0] == NULL) { krb5_dbe_free_mkey_aux_list(context, head_data); + free(new_data); return (ENOMEM); } memcpy(new_data->latest_mkey.key_data_contents[0], curloc, diff --git a/src/lib/kdb/kdb_default.c b/src/lib/kdb/kdb_default.c index 098879d93..9985a4ebf 100644 --- a/src/lib/kdb/kdb_default.c +++ b/src/lib/kdb/kdb_default.c @@ -516,13 +516,14 @@ krb5_def_fetch_mkey_list(krb5_context context, krb5_keyblock cur_mkey; krb5_keylist_node *mkey_list_head = NULL, **mkey_list_node; krb5_key_data *key_data; - krb5_mkey_aux_node *mkey_aux_data_list, *aux_data_entry; + krb5_mkey_aux_node *mkey_aux_data_list = NULL, *aux_data_entry; int i; if (mkeys_list == NULL) return (EINVAL); memset(&cur_mkey, 0, sizeof(cur_mkey)); + memset(&master_entry, 0, sizeof(master_entry)); nprinc = 1; if ((retval = krb5_db_get_principal(context, mprinc, @@ -645,6 +646,7 @@ krb5_def_fetch_mkey_list(krb5_context context, clean_n_exit: krb5_db_free_principal(context, &master_entry, nprinc); + krb5_dbe_free_mkey_aux_list(context, mkey_aux_data_list); if (retval != 0) krb5_dbe_free_key_list(context, mkey_list_head); return retval; -- cgit