From ea8a8eb4deaf5d4adb126aa9ce880ec9eb8dd32a Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Tue, 30 May 2023 13:40:29 -0500 Subject: [PATCH] krb5: klist -l cannot tell which cache is primary unless the default one is (WIP) I've noticed that `klist -l` doesn't show which ccache is the primary one. This is fundamentally because we don't have a method for getting the primary ccache. This commit prepares for adding that. --- kcm/glue.c | 1 + lib/krb5/acache.c | 1 + lib/krb5/dcache.c | 1 + lib/krb5/fcache.c | 1 + lib/krb5/kcm.c | 2 ++ lib/krb5/krb5.h | 1 + lib/krb5/krcache.c | 1 + lib/krb5/mcache.c | 1 + lib/krb5/scache.c | 1 + 9 files changed, 10 insertions(+) diff --git a/kcm/glue.c b/kcm/glue.c index 610225b189..7d4e304739 100644 --- a/kcm/glue.c +++ b/kcm/glue.c @@ -288,6 +288,7 @@ static const krb5_cc_ops krb5_kcmss_ops = { kcmss_get_name_2, kcmss_resolve_2, NULL, + NULL, 0, '\0', ':' diff --git a/lib/krb5/acache.c b/lib/krb5/acache.c index 70cb0a56fb..67cc5c107b 100644 --- a/lib/krb5/acache.c +++ b/lib/krb5/acache.c @@ -1123,6 +1123,7 @@ KRB5_LIB_VARIABLE const krb5_cc_ops krb5_acc_ops = { NULL, acc_get_name_2, acc_resolve_2, + NULL, /* acc_get_primary_name */ acc_gen_new_2, 0, ':', diff --git a/lib/krb5/dcache.c b/lib/krb5/dcache.c index 629c5012f6..51dbe19bb2 100644 --- a/lib/krb5/dcache.c +++ b/lib/krb5/dcache.c @@ -847,6 +847,7 @@ KRB5_LIB_VARIABLE const krb5_cc_ops krb5_dcc_ops = { dcc_get_kdc_offset, dcc_get_name_2, dcc_resolve_2, + NULL, /* dcc_get_primary_name */ dcc_gen_new_2, 1, '\0', diff --git a/lib/krb5/fcache.c b/lib/krb5/fcache.c index 9d7d119815..d94b0f4846 100644 --- a/lib/krb5/fcache.c +++ b/lib/krb5/fcache.c @@ -1694,6 +1694,7 @@ KRB5_LIB_VARIABLE const krb5_cc_ops krb5_fcc_ops = { fcc_get_kdc_offset, fcc_get_name_2, fcc_resolve_2, + NULL, /* fcc_get_primary_name */ fcc_gen_new_2, 1, '+', diff --git a/lib/krb5/kcm.c b/lib/krb5/kcm.c index f25ce854f6..4fb20d6b98 100644 --- a/lib/krb5/kcm.c +++ b/lib/krb5/kcm.c @@ -1337,6 +1337,7 @@ KRB5_LIB_VARIABLE const krb5_cc_ops krb5_kcm_ops = { kcm_get_kdc_offset, kcm_get_name_2, kcm_resolve_2_kcm, + NULL, /* kcm_get_primary_name_kcm */ kcm_gen_new_2_kcm, 0, ':', @@ -1372,6 +1373,7 @@ KRB5_LIB_VARIABLE const krb5_cc_ops krb5_akcm_ops = { NULL, kcm_get_name_2, kcm_resolve_2_api, + NULL, /* kcm_get_primary_name_api */ kcm_gen_new_2_api, 0, '\0', diff --git a/lib/krb5/krb5.h b/lib/krb5/krb5.h index cde0c312d5..5552b87944 100644 --- a/lib/krb5/krb5.h +++ b/lib/krb5/krb5.h @@ -539,6 +539,7 @@ typedef struct krb5_cc_ops { krb5_error_code (KRB5_CALLCONV * resolve_2)(krb5_context, krb5_ccache *, const char *, const char *); /* Version 6 */ + krb5_error_code (KRB5_CALLCONV * get_primary_name)(krb5_context, krb5_ccache *, const char *); krb5_error_code (KRB5_CALLCONV * gen_new_2)(krb5_context, const char *, krb5_ccache *); uint32_t filepath:1; /* Versions later than 6 can add bitfields here */ unsigned char subsep; diff --git a/lib/krb5/krcache.c b/lib/krb5/krcache.c index 5a869a47bf..a931f0db4a 100644 --- a/lib/krb5/krcache.c +++ b/lib/krb5/krcache.c @@ -2074,6 +2074,7 @@ KRB5_LIB_VARIABLE const krb5_cc_ops krb5_krcc_ops = { krcc_get_kdc_offset, krcc_get_name_2, krcc_resolve_2, + NULL, /* krcc_get_primary_name */ krcc_gen_new_2, 0, '\0', diff --git a/lib/krb5/mcache.c b/lib/krb5/mcache.c index 94fe3b903c..5bfa76f9bd 100644 --- a/lib/krb5/mcache.c +++ b/lib/krb5/mcache.c @@ -639,6 +639,7 @@ KRB5_LIB_VARIABLE const krb5_cc_ops krb5_mcc_ops = { mcc_get_kdc_offset, mcc_get_name_2, mcc_resolve_2, + NULL, /* mcc_get_primary_name */ mcc_gen_new_2, 0, '\0', diff --git a/lib/krb5/scache.c b/lib/krb5/scache.c index 5c5e75c7a1..d14eae15f9 100644 --- a/lib/krb5/scache.c +++ b/lib/krb5/scache.c @@ -1642,6 +1642,7 @@ KRB5_LIB_VARIABLE const krb5_cc_ops krb5_scc_ops = { NULL, scc_get_name_2, scc_resolve_2, + NULL, /* scc_get_primary_name */ scc_gen_new_2, 1, '\0',