(kt_list): reorganize some. open the keytab

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@9889 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
2001-05-10 15:43:38 +00:00
parent 2f86a9d647
commit 7576655be4

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997 - 2000 Kungliga Tekniska H<>gskolan
* Copyright (c) 1997 - 2001 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -59,8 +59,9 @@ struct key_info {
int
kt_list(int argc, char **argv)
{
krb5_error_code ret;
krb5_error_code ret = 0;
krb5_kt_cursor cursor;
krb5_keytab keytab;
krb5_keytab_entry entry;
int optind = 0;
struct key_info *ki, **kie = &ki, *kp;
@@ -83,15 +84,38 @@ kt_list(int argc, char **argv)
return 0;
}
if (keytab_string == NULL) {
ret = krb5_kt_default_name (context, keytab_buf, sizeof(keytab_buf));
if (ret) {
krb5_warn(context, ret, "krb5_kt_default_name");
return 1;
}
keytab_string = keytab_buf;
}
ret = krb5_kt_resolve(context, keytab_string, &keytab);
if (ret) {
krb5_warn(context, ret, "resolving keytab %s", keytab_string);
goto out;
}
if (verbose_flag)
fprintf (stderr, "Using keytab %s\n", keytab_string);
ret = krb5_kt_start_seq_get(context, keytab, &cursor);
if(ret){
krb5_warn(context, ret, "krb5_kt_start_seq_get %s", keytab_string);
return 1;
goto out;
}
while((ret = krb5_kt_next_entry(context, keytab, &entry, &cursor)) == 0){
#define CHECK_MAX(F) if(max_##F < strlen(kp->F)) max_##F = strlen(kp->F)
kp = malloc(sizeof(*kp));
if (kp == NULL) {
krb5_kt_free_entry(context, &entry);
krb5_kt_end_seq_get(context, keytab, &cursor);
krb5_warnx(context, ret, "malloc failed");
goto out;
}
asprintf(&kp->version, "%d", entry.vno);
CHECK_MAX(version);
@@ -159,5 +183,7 @@ kt_list(int argc, char **argv)
kp = kp->next;
free(ki);
}
return 0;
out:
krb5_kt_close(context, keytab);
return ret != 0;
}