Fix kadm5 error cleanup
This commit is contained in:
@@ -46,7 +46,7 @@ kadm5_s_rename_principal(void *server_handle,
|
||||
krb5_principal oldname;
|
||||
|
||||
memset(&ent, 0, sizeof(ent));
|
||||
if(krb5_principal_compare(context->context, source, target))
|
||||
if (krb5_principal_compare(context->context, source, target))
|
||||
return KADM5_DUP; /* XXX is this right? */
|
||||
if (!context->keep_open) {
|
||||
ret = context->db->hdb_open(context->context, context->db, O_RDWR, 0);
|
||||
@@ -61,11 +61,11 @@ kadm5_s_rename_principal(void *server_handle,
|
||||
ret = context->db->hdb_fetch_kvno(context->context, context->db,
|
||||
source, HDB_F_GET_ANY|HDB_F_ADMIN_DATA, 0, &ent);
|
||||
if (ret)
|
||||
goto out;
|
||||
goto out2;
|
||||
oldname = ent.entry.principal;
|
||||
ret = _kadm5_set_modifier(context, &ent.entry);
|
||||
if (ret)
|
||||
goto out2;
|
||||
goto out3;
|
||||
{
|
||||
/* fix salt */
|
||||
size_t i;
|
||||
@@ -79,33 +79,35 @@ kadm5_s_rename_principal(void *server_handle,
|
||||
if(ent.entry.keys.val[i].salt == NULL){
|
||||
ent.entry.keys.val[i].salt =
|
||||
malloc(sizeof(*ent.entry.keys.val[i].salt));
|
||||
if(ent.entry.keys.val[i].salt == NULL)
|
||||
return ENOMEM;
|
||||
ret = copy_Salt(&salt, ent.entry.keys.val[i].salt);
|
||||
if(ret)
|
||||
if (ent.entry.keys.val[i].salt == NULL)
|
||||
ret = ENOMEM;
|
||||
else
|
||||
ret = copy_Salt(&salt, ent.entry.keys.val[i].salt);
|
||||
if (ret)
|
||||
break;
|
||||
}
|
||||
}
|
||||
krb5_free_salt(context->context, salt2);
|
||||
}
|
||||
if (ret)
|
||||
goto out2;
|
||||
goto out3;
|
||||
|
||||
/* Borrow target */
|
||||
ent.entry.principal = target;
|
||||
ret = hdb_seal_keys(context->context, context->db, &ent.entry);
|
||||
if (ret)
|
||||
goto out2;
|
||||
goto out3;
|
||||
|
||||
/* This logs the change for iprop and writes to the HDB */
|
||||
ret = kadm5_log_rename(context, source, &ent.entry);
|
||||
|
||||
out2:
|
||||
out3:
|
||||
ent.entry.principal = oldname; /* Unborrow target */
|
||||
hdb_free_entry(context->context, &ent);
|
||||
|
||||
out:
|
||||
out2:
|
||||
(void) kadm5_log_end(context);
|
||||
out:
|
||||
if (!context->keep_open) {
|
||||
kadm5_ret_t ret2;
|
||||
ret2 = context->db->hdb_close(context->context, context->db);
|
||||
|
Reference in New Issue
Block a user