From a54ed99f1e629dc566a0ef76f1db3a3ff3cbb81b Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Thu, 10 May 2001 15:42:01 +0000 Subject: [PATCH] (kt_get): reorganize some. open the keytab (defaulting to the modify one) git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@9887 ec53bebd-3082-4978-b11e-865c3cabbd6b --- admin/get.c | 33 +++++++++++++++++++++++++-------- 1 file changed, 25 insertions(+), 8 deletions(-) diff --git a/admin/get.c b/admin/get.c index 0e66c6860..f9fe1460e 100644 --- a/admin/get.c +++ b/admin/get.c @@ -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. * @@ -38,9 +38,10 @@ RCSID("$Id$"); int kt_get(int argc, char **argv) { - krb5_error_code ret; + krb5_error_code ret = 0; + krb5_keytab keytab; kadm5_config_params conf; - void *kadm_handle; + void *kadm_handle = NULL; char *principal = NULL; char *realm = NULL; char *admin_server = NULL; @@ -83,9 +84,24 @@ kt_get(int argc, char **argv) || help_flag) { arg_printusage(args, sizeof(args) / sizeof(args[0]), "ktutil get", "principal..."); - return 0; + return 1; } + if (keytab_string == NULL) { + ret = krb5_kt_default_modify_name (context, keytab_buf, + sizeof(keytab_buf)); + if (ret) { + krb5_warn(context, ret, "krb5_kt_default_modify_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); + return 1; + } + if (etype_strs.num_strings) { int i; @@ -132,10 +148,9 @@ kt_get(int argc, char **argv) &kadm_handle); if(ret) { krb5_warn(context, ret, "kadm5_init_with_password"); - return 0; + goto out; } - for(i = optind; i < argc; i++){ krb5_principal princ_ent; kadm5_principal_ent_rec princ; @@ -223,6 +238,8 @@ kt_get(int argc, char **argv) out: free_getarg_strings(&etype_strs); free(etypes); - kadm5_destroy(kadm_handle); - return 0; + if (kadm_handle) + kadm5_destroy(kadm_handle); + krb5_kt_close(context, keytab); + return ret != 0; }