diff --git a/appl/afsutil/afslog.c b/appl/afsutil/afslog.c index 86ed9d66d..86c9c530d 100644 --- a/appl/afsutil/afslog.c +++ b/appl/afsutil/afslog.c @@ -266,7 +266,7 @@ main(int argc, char **argv) ret = krb5_parse_name(context, client_string, &client); if (ret == 0) - ret = krb5_cc_cache_match(context, client, NULL, &id); + ret = krb5_cc_cache_match(context, client, &id); if (ret) id = NULL; } diff --git a/kuser/kinit.c b/kuser/kinit.c index 0e8d5999b..9b1c5baf1 100644 --- a/kuser/kinit.c +++ b/kuser/kinit.c @@ -793,7 +793,7 @@ main (int argc, char **argv) } } } else { - ret = krb5_cc_cache_match(context, principal, NULL, &ccache); + ret = krb5_cc_cache_match(context, principal, &ccache); if (ret) ret = krb5_cc_default (context, &ccache); } diff --git a/kuser/kswitch.c b/kuser/kswitch.c index b22ff6ae7..8b5e645df 100644 --- a/kuser/kswitch.c +++ b/kuser/kswitch.c @@ -112,7 +112,7 @@ main (int argc, char **argv) if (ret) krb5_err (context, 1, ret, "krb5_parse_name: %s", principal); - ret = krb5_cc_cache_match(context, p, type, &id); + ret = krb5_cc_cache_match(context, p, &id); if (ret) krb5_err (context, 1, ret, N_("Did not find principal: %s", ""), principal); diff --git a/lib/gssapi/krb5/acquire_cred.c b/lib/gssapi/krb5/acquire_cred.c index 6f62c94f4..be680840f 100644 --- a/lib/gssapi/krb5/acquire_cred.c +++ b/lib/gssapi/krb5/acquire_cred.c @@ -137,7 +137,6 @@ static OM_uint32 acquire_initiator_cred if (handle->principal) { kret = krb5_cc_cache_match (context, handle->principal, - NULL, &ccache); if (kret == 0) { ret = GSS_S_COMPLETE; diff --git a/lib/gssapi/ntlm/digest.c b/lib/gssapi/ntlm/digest.c index dcc5995ea..e53040da4 100644 --- a/lib/gssapi/ntlm/digest.c +++ b/lib/gssapi/ntlm/digest.c @@ -84,7 +84,7 @@ get_ccache(krb5_context context, int *destroy, krb5_ccache *id) if (ret) goto out; - ret = krb5_cc_cache_match(context, principal, NULL, id); + ret = krb5_cc_cache_match(context, principal, id); if (ret == 0) return 0; diff --git a/lib/krb5/krb5.h b/lib/krb5/krb5.h index 9e81d5d5e..20d03841b 100644 --- a/lib/krb5/krb5.h +++ b/lib/krb5/krb5.h @@ -297,6 +297,7 @@ struct krb5_cc_ops; NULL) typedef void *krb5_cc_cursor; +typedef struct krb5_cccol_cursor *krb5_cccol_cursor; typedef struct krb5_ccache_data { const struct krb5_cc_ops *ops; diff --git a/lib/krb5/test_cc.c b/lib/krb5/test_cc.c index a944ba0ee..511d50e22 100644 --- a/lib/krb5/test_cc.c +++ b/lib/krb5/test_cc.c @@ -316,8 +316,7 @@ test_def_cc_name(krb5_context context) } static void -test_cache_find(krb5_context context, const char *type, const char *principal, - int find) +test_cache_find(krb5_context context, const char *principal, int find) { krb5_principal client; krb5_error_code ret; @@ -327,7 +326,7 @@ test_cache_find(krb5_context context, const char *type, const char *principal, if (ret) krb5_err(context, 1, ret, "parse_name for %s failed", principal); - ret = krb5_cc_cache_match(context, client, type, &id); + ret = krb5_cc_cache_match(context, client, &id); if (ret && find) krb5_err(context, 1, ret, "cc_cache_match for %s failed", principal); if (ret == 0 && !find) @@ -378,6 +377,41 @@ test_cache_iter(krb5_context context, const char *type, int destroy) krb5_cc_cache_end_seq_get(context, cursor); } +static void +test_cache_iter_all(krb5_context context) +{ + krb5_cccol_cursor cursor; + krb5_error_code ret; + krb5_ccache id; + + ret = krb5_cccol_cursor_new (context, &cursor); + if (ret) + krb5_err(context, 1, ret, "krb5_cccol_cursor_new"); + + + while ((ret = krb5_cccol_cursor_next (context, cursor, &id)) == 0) { + krb5_principal principal; + char *name; + + if (debug_flag) + printf("name: %s\n", krb5_cc_get_name(context, id)); + ret = krb5_cc_get_principal(context, id, &principal); + if (ret == 0) { + ret = krb5_unparse_name(context, principal, &name); + if (ret == 0) { + if (debug_flag) + printf("\tprincipal: %s\n", name); + free(name); + } + krb5_free_principal(context, principal); + } + krb5_cc_close(context, id); + } + + krb5_cccol_cursor_free(context, &cursor); +} + + static void test_copy(krb5_context context, const char *fromtype, const char *totype) { @@ -548,6 +582,9 @@ main(int argc, char **argv) test_init_vs_destroy(context, &krb5_scc_ops); test_mcc_default(); test_def_cc_name(context); + + test_cache_iter_all(context); + test_cache_iter(context, "MEMORY", 0); { krb5_principal p; @@ -558,8 +595,8 @@ main(int argc, char **argv) krb5_free_principal(context, p); } - test_cache_find(context, "MEMORY", "lha@SU.SE", 1); - test_cache_find(context, "MEMORY", "hulabundulahotentot@SU.SE", 0); + test_cache_find(context, "lha@SU.SE", 1); + test_cache_find(context, "hulabundulahotentot@SU.SE", 0); test_cache_iter(context, "MEMORY", 0); test_cache_iter(context, "MEMORY", 1); diff --git a/lib/krb5/version-script.map b/lib/krb5/version-script.map index 2f67a6106..af71bea1b 100644 --- a/lib/krb5/version-script.map +++ b/lib/krb5/version-script.map @@ -1,6 +1,6 @@ # $Id$ -HEIMDAL_KRB5_1.0 { +HEIMDAL_KRB5_2.0 { global: krb524_convert_creds_kdc; krb524_convert_creds_kdc_ccache;