diff --git a/kuser/kinit.c b/kuser/kinit.c index 89dad1067..f52fe5a60 100644 --- a/kuser/kinit.c +++ b/kuser/kinit.c @@ -4,7 +4,7 @@ RCSID("$Id$"); static void usage (void) { - errx (1, "Usage: %s [-f] [principal]", __progname); + errx (1, "Usage: %s [-f] [-p] [principal]", __progname); } int @@ -16,19 +16,24 @@ main (int argc, char **argv) krb5_principal principal; krb5_principal server; krb5_creds cred; - krb5_preauthtype pre_auth[] = {KRB5_PADATA_ENC_TIMESTAMP}; + krb5_preauthtype pre_auth_types[] = {KRB5_PADATA_ENC_TIMESTAMP}; int c; int forwardable = 0; krb5_flags options = 0; + char *realm; + int preauth = 1; set_progname (argv[0]); - while ((c = getopt (argc, argv, "f")) != EOF) { + while ((c = getopt (argc, argv, "fp")) != EOF) { switch (c) { case 'f': forwardable = 1; options = 1; /* XXX */ break; + case 'p': + preauth = 0; + break; default: usage (); } @@ -36,7 +41,6 @@ main (int argc, char **argv) argc -= optind; argv += optind; - err = krb5_init_context (&context); if (err) errx (1, "krb5_init_context: %s", krb5_get_err_text(context, err)); @@ -45,19 +49,19 @@ main (int argc, char **argv) if (err) errx (1, "krb5_cc_default: %s", krb5_get_err_text(context, err)); + err = krb5_get_default_realm (context, &realm); + if (err) + errx (1, "krb5_get_default_realm: %s", + krb5_get_err_text(context, err)); + if(argv[0]){ err = krb5_parse_name (context, argv[0], &principal); if (err) errx (1, "krb5_parse_name: %s", krb5_get_err_text(context, err)); - + fprintf (stderr, "%s@%s's ", argv[0], realm); }else{ - char *realm; struct passwd *pw; - err = krb5_get_default_realm (context, &realm); - if (err) - errx (1, "krb5_get_default_realm: %s", - krb5_get_err_text(context, err)); pw = getpwuid(getuid()); err = krb5_build_principal(context, &principal, strlen(realm), realm, @@ -65,8 +69,9 @@ main (int argc, char **argv) if (err) errx (1, "krb5_build_principal: %s", krb5_get_err_text(context, err)); - free(realm); + fprintf (stderr, "%s@%s's ", pw->pw_name, realm); } + free(realm); err = krb5_cc_initialize (context, ccache, principal); if (err) @@ -109,7 +114,7 @@ main (int argc, char **argv) options, NULL, NULL, - /*NULL*/ pre_auth, + preauth ? pre_auth_types : NULL, NULL, ccache, &cred,