summaryrefslogtreecommitdiffstats
path: root/src/lib/kdb/kdb_default.c
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2010-07-06 21:53:23 +0000
committerGreg Hudson <ghudson@mit.edu>2010-07-06 21:53:23 +0000
commit8e78a7eeb7266329891971090d2666f5c6a13ad0 (patch)
treeb5d8a1827176cd1fdc9da5983181ee25c30b31b8 /src/lib/kdb/kdb_default.c
parent4a1d6a694452122f71d876e39ee335ea7ee022b6 (diff)
downloadkrb5-8e78a7eeb7266329891971090d2666f5c6a13ad0.tar.gz
krb5-8e78a7eeb7266329891971090d2666f5c6a13ad0.tar.xz
krb5-8e78a7eeb7266329891971090d2666f5c6a13ad0.zip
Remove count parameters from get_principal, put_principal,
free_principal, delete_principal, and get_policy. Make get_principal allocate the DB entry container. Fold krb5_db_get_principal_ext into krb5_db_get_principal. ticket: 6749 status: open git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@24175 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib/kdb/kdb_default.c')
-rw-r--r--src/lib/kdb/kdb_default.c37
1 files changed, 14 insertions, 23 deletions
diff --git a/src/lib/kdb/kdb_default.c b/src/lib/kdb/kdb_default.c
index 5f8d504a02..5ca749e611 100644
--- a/src/lib/kdb/kdb_default.c
+++ b/src/lib/kdb/kdb_default.c
@@ -425,9 +425,8 @@ krb5_def_fetch_mkey_list(krb5_context context,
krb5_keylist_node **mkeys_list)
{
krb5_error_code retval;
- krb5_db_entry master_entry;
- int nprinc;
- krb5_boolean more, found_key = FALSE;
+ krb5_db_entry *master_entry;
+ krb5_boolean found_key = FALSE;
krb5_keyblock cur_mkey;
krb5_keylist_node *mkey_list_head = NULL, **mkey_list_node;
krb5_key_data *key_data;
@@ -438,36 +437,28 @@ krb5_def_fetch_mkey_list(krb5_context context,
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,
- &master_entry, &nprinc, &more)))
+ retval = krb5_db_get_principal(context, mprinc, 0, &master_entry);
+ if (retval == KRB5_KDB_NOENTRY)
+ return (KRB5_KDB_NOMASTERKEY);
+ if (retval)
return (retval);
- if (nprinc != 1) {
- if (nprinc)
- krb5_db_free_principal(context, &master_entry, nprinc);
- return(KRB5_KDB_NOMASTERKEY);
- } else if (more) {
- krb5_db_free_principal(context, &master_entry, nprinc);
- return (KRB5KDC_ERR_PRINCIPAL_NOT_UNIQUE);
- }
-
/*
* Check if the input mkey is the latest key and if it isn't then find the
* latest mkey.
*/
- if (mkey->enctype == master_entry.key_data[0].key_data_type[0]) {
- if (krb5_dbe_decrypt_key_data(context, mkey, &master_entry.key_data[0],
+ if (mkey->enctype == master_entry->key_data[0].key_data_type[0]) {
+ if (krb5_dbe_decrypt_key_data(context, mkey,
+ &master_entry->key_data[0],
&cur_mkey, NULL) == 0) {
found_key = TRUE;
}
}
if (!found_key) {
- if ((retval = krb5_dbe_lookup_mkey_aux(context, &master_entry,
+ if ((retval = krb5_dbe_lookup_mkey_aux(context, master_entry,
&mkey_aux_data_list)))
goto clean_n_exit;
@@ -504,13 +495,13 @@ krb5_def_fetch_mkey_list(krb5_context context,
/* Set mkey_list_head to the current mkey as an optimization. */
/* mkvno may not be latest so ... */
- mkey_list_head->kvno = master_entry.key_data[0].key_data_kvno;
+ mkey_list_head->kvno = master_entry->key_data[0].key_data_kvno;
/* this is the latest clear mkey (avoids a redundant decrypt) */
mkey_list_head->keyblock = cur_mkey;
/* loop through any other master keys creating a list of krb5_keylist_nodes */
mkey_list_node = &mkey_list_head->next;
- for (i = 1; i < master_entry.n_key_data; i++) {
+ for (i = 1; i < master_entry->n_key_data; i++) {
if (*mkey_list_node == NULL) {
/* *mkey_list_node points to next field of previous node */
*mkey_list_node = (krb5_keylist_node *) malloc(sizeof(krb5_keylist_node));
@@ -520,7 +511,7 @@ krb5_def_fetch_mkey_list(krb5_context context,
}
memset(*mkey_list_node, 0, sizeof(krb5_keylist_node));
}
- key_data = &master_entry.key_data[i];
+ key_data = &master_entry->key_data[i];
retval = krb5_dbe_decrypt_key_data(context, &cur_mkey, key_data,
&((*mkey_list_node)->keyblock),
NULL);
@@ -534,7 +525,7 @@ krb5_def_fetch_mkey_list(krb5_context context,
*mkeys_list = mkey_list_head;
clean_n_exit:
- krb5_db_free_principal(context, &master_entry, nprinc);
+ krb5_db_free_principal(context, master_entry);
krb5_dbe_free_mkey_aux_list(context, mkey_aux_data_list);
if (retval != 0)
krb5_dbe_free_key_list(context, mkey_list_head);