Fix memleak in lib/kadm5/set_keys.c

This commit is contained in:
Nicolas Williams
2015-05-29 18:27:55 -05:00
parent e4b61df46f
commit b1af99aa81

View File

@@ -201,10 +201,13 @@ _kadm5_set_keys2(kadm5_server_context *context,
setup_Key(&key, &salt, key_data, k); setup_Key(&key, &salt, key_data, k);
ret = add_Keys(&hkset.keys, &key); ret = add_Keys(&hkset.keys, &key);
if (ret) if (ret) {
free_hdb_keyset(&hkset);
goto out; goto out;
}
} }
ret = add_HDB_Ext_KeySet(hist_keys, &hkset); ret = add_HDB_Ext_KeySet(hist_keys, &hkset);
free_hdb_keyset(&hkset);
if (ret) if (ret)
goto out; goto out;
replace_hist_keys = 1; replace_hist_keys = 1;
@@ -249,6 +252,7 @@ _kadm5_set_keys2(kadm5_server_context *context,
* *
* Of course, the above hdb_replace_extension() is not at all efficient... * Of course, the above hdb_replace_extension() is not at all efficient...
*/ */
free_HDB_extension(&ext);
free_Keys(&ent->keys); free_Keys(&ent->keys);
ent->keys = keys; ent->keys = keys;
hdb_entry_set_pw_change_time(context->context, ent, 0); hdb_entry_set_pw_change_time(context->context, ent, 0);
@@ -258,7 +262,6 @@ _kadm5_set_keys2(kadm5_server_context *context,
out: out:
free_Keys(&keys); free_Keys(&keys);
free_hdb_keyset(&hkset);
free_HDB_extension(&ext); free_HDB_extension(&ext);
return ret; return ret;
} }