diff options
author | Greg Hudson <ghudson@mit.edu> | 2010-07-06 21:53:23 +0000 |
---|---|---|
committer | Greg Hudson <ghudson@mit.edu> | 2010-07-06 21:53:23 +0000 |
commit | 8e78a7eeb7266329891971090d2666f5c6a13ad0 (patch) | |
tree | b5d8a1827176cd1fdc9da5983181ee25c30b31b8 /src/lib/kdb/kdb_default.c | |
parent | 4a1d6a694452122f71d876e39ee335ea7ee022b6 (diff) | |
download | krb5-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.c | 37 |
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); |