diff --git a/kuser/klist.c b/kuser/klist.c index e0e184b94..3c8c4f5fb 100644 --- a/kuser/klist.c +++ b/kuser/klist.c @@ -54,10 +54,11 @@ printable_time_long(time_t t) return s; } -#define COL_ISSUED " Issued" -#define COL_EXPIRES " Expires" -#define COL_FLAGS "Flags" -#define COL_PRINCIPAL " Principal" +#define COL_ISSUED " Issued" +#define COL_EXPIRES " Expires" +#define COL_FLAGS "Flags" +#define COL_PRINCIPAL " Principal" +#define COL_PRINCIPAL_KVNO " Principal (kvno)" static void print_cred(krb5_context context, krb5_creds *cred, rtbl_t ct, int do_flags) @@ -412,13 +413,18 @@ display_v4_tickets (int do_verbose) ct = rtbl_create(); rtbl_add_column(ct, COL_ISSUED, 0); rtbl_add_column(ct, COL_EXPIRES, 0); - rtbl_add_column(ct, COL_PRINCIPAL, 0); + if (do_verbose) + rtbl_add_column(ct, COL_PRINCIPAL_KVNO, 0); + else + rtbl_add_column(ct, COL_PRINCIPAL, 0); rtbl_set_prefix(ct, " "); rtbl_set_column_prefix(ct, COL_ISSUED, ""); while ((ret = tf_get_cred(&cred)) == KSUCCESS) { struct timeval tv; char buf1[20], buf2[20]; + const char *pp; + found++; strlcpy(buf1, @@ -436,10 +442,18 @@ display_v4_tickets (int do_verbose) sizeof(buf2)); rtbl_add_column_entry(ct, COL_ISSUED, buf1); rtbl_add_column_entry(ct, COL_EXPIRES, buf2); - rtbl_add_column_entry(ct, COL_PRINCIPAL, - krb_unparse_name_long(cred.service, - cred.instance, - cred.realm)); + pp = krb_unparse_name_long(cred.service, + cred.instance, + cred.realm); + if (do_verbose) { + char *tmp; + + asprintf(&tmp, "%s (%d)", pp, cred.kvno); + rtbl_add_column_entry(ct, COL_PRINCIPAL_KVNO, tmp); + free(tmp); + } else { + rtbl_add_column_entry(ct, COL_PRINCIPAL, pp); + } } rtbl_format(ct, stdout); rtbl_destroy(ct);