summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorWill Fiveash <will.fiveash@oracle.com>2009-02-05 20:57:09 +0000
committerWill Fiveash <will.fiveash@oracle.com>2009-02-05 20:57:09 +0000
commit3442622bf0e205fa829520868909a8b8d0771e9f (patch)
tree8be35abe65b5305b5506887a18b14f879db15182 /src/lib
parent860da5ef64ad30db009eefaafb282a62489e56ff (diff)
downloadkrb5-3442622bf0e205fa829520868909a8b8d0771e9f.tar.gz
krb5-3442622bf0e205fa829520868909a8b8d0771e9f.tar.xz
krb5-3442622bf0e205fa829520868909a8b8d0771e9f.zip
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
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/kdb/kdb5.c13
-rw-r--r--src/lib/kdb/kdb_default.c4
2 files changed, 11 insertions, 6 deletions
diff --git a/src/lib/kdb/kdb5.c b/src/lib/kdb/kdb5.c
index 442c28f27a..b17e8d1900 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 098879d93e..9985a4ebfc 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;