From 7f13df2470ca8114850faae5d2dfd90464da4377 Mon Sep 17 00:00:00 2001 From: Johan Danielsson Date: Sat, 19 Jul 1997 07:54:21 +0000 Subject: [PATCH] Ask for password before calling get_in_tkt. This makes it possible to call key_proc more than once. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2465 ec53bebd-3082-4978-b11e-865c3cabbd6b --- kuser/kinit.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/kuser/kinit.c b/kuser/kinit.c index 047840054..0a49edbbd 100644 --- a/kuser/kinit.c +++ b/kuser/kinit.c @@ -80,7 +80,8 @@ main (int argc, char **argv) krb5_preauthtype pre_auth_types[] = {KRB5_PADATA_ENC_TIMESTAMP}; int c; char *realm; - + char pwbuf[128]; + union { krb5_flags i; KDCOptions f; @@ -125,13 +126,9 @@ main (int argc, char **argv) krb5_get_err_text(context, ret)); if(argv[0]){ - char *p; ret = krb5_parse_name (context, argv[0], &principal); if (ret) errx (1, "krb5_parse_name: %s", krb5_get_err_text(context, ret)); - krb5_unparse_name(context, principal, &p); - fprintf (stderr, "%s's ", p); - free(p); }else{ struct passwd *pw; @@ -142,7 +139,6 @@ main (int argc, char **argv) if (ret) errx (1, "krb5_build_principal: %s", krb5_get_err_text(context, ret)); - fprintf (stderr, "%s@%s's ", pw->pw_name, realm); } free(realm); @@ -173,15 +169,28 @@ main (int argc, char **argv) cred.server = server; cred.times.endtime = 0; + + { + char *p; + char *prompt; + krb5_unparse_name(context, principal, &p); + asprintf(&prompt, "%s's Password: ", p); + free(p); + des_read_pw_string(pwbuf, sizeof(pwbuf), prompt, 0); + free(prompt); + } + + ret = krb5_get_in_tkt_with_password (context, options.i, NULL, NULL, preauth ? pre_auth_types : NULL, - NULL, + pwbuf, ccache, &cred, NULL); + memset(pwbuf, 0, sizeof(pwbuf)); if (ret) errx (1, "krb5_get_in_tkt_with_password: %s", krb5_get_err_text(context, ret));