summaryrefslogtreecommitdiff
path: root/kerberosIV/kinit
diff options
context:
space:
mode:
authorArtur Grabowski <art@cvs.openbsd.org>1997-11-28 12:49:35 +0000
committerArtur Grabowski <art@cvs.openbsd.org>1997-11-28 12:49:35 +0000
commitc7b7a71f79cef9dbb230f353d9bbf3d6ef3a5aed (patch)
tree5817f345511882de1c9e1a57f3095352ce671421 /kerberosIV/kinit
parent0857c8c45edb4fe59f82903f40d99a3aa19a04f7 (diff)
The first big step towards a complete upgrade to kth-krb4-0.9.7
Diffstat (limited to 'kerberosIV/kinit')
-rw-r--r--kerberosIV/kinit/kinit.c106
1 files changed, 47 insertions, 59 deletions
diff --git a/kerberosIV/kinit/kinit.c b/kerberosIV/kinit/kinit.c
index bd7ca653887..d3aa92b8661 100644
--- a/kerberosIV/kinit/kinit.c
+++ b/kerberosIV/kinit/kinit.c
@@ -1,4 +1,7 @@
-/* $Id: kinit.c,v 1.1 1995/12/14 06:52:51 tholo Exp $ */
+/* $Id: kinit.c,v 1.2 1997/11/28 12:48:47 art Exp $ */
+/* $KTH: kinit.c,v 1.15 1997/03/30 18:58:46 assar Exp $ */
+
+
/*-
* Copyright 1987, 1988 by the Student Information Processing Board
@@ -28,55 +31,50 @@
* -r[realm]
* -v[erbose]
* -l[ifetime]
+ * -p
*/
#include <kuser_locl.h>
#include <sys/param.h>
#define LIFE DEFAULT_TKT_LIFE /* lifetime of ticket in 5-minute units */
+#define CHPASSLIFE 2
-char *progname;
+char progname[] = "kinit";
static void
-get_input(s, size, stream)
-char *s;
-int size;
-FILE *stream;
+get_input(char *s, int size, FILE *stream)
{
- char *p;
+ char *p;
- if (fgets(s, size, stream) == NULL)
- exit(1);
- if ( (p = strchr(s, '\n')) != NULL)
- *p = '\0';
+ if (fgets(s, size, stream) == NULL)
+ exit(1);
+ if ( (p = strchr(s, '\n')) != NULL)
+ *p = '\0';
}
-
static void
-usage()
+usage(void)
{
- fprintf(stderr, "Usage: %s [-irvl] [name]\n", progname);
+ fprintf(stderr, "Usage: %s [-irvlp] [name]\n", progname);
exit(1);
}
int
-main(argc, argv)
- int argc;
- char *argv[];
+main(int argc, char **argv)
{
char aname[ANAME_SZ];
char inst[INST_SZ];
char realm[REALM_SZ];
char buf[MAXHOSTNAMELEN];
+ char name[MAX_K_NAME_SZ];
char *username = NULL;
- int iflag, rflag, vflag, lflag, lifetime, k_errno;
- register char *cp;
- register i;
+ int iflag, rflag, vflag, lflag, pflag, lifetime, k_errno;
+ int i;
*inst = *realm = '\0';
- iflag = rflag = vflag = lflag = 0;
+ iflag = rflag = vflag = lflag = pflag = 0;
lifetime = LIFE;
- progname = (cp = strrchr(*argv, '/')) ? cp + 1 : *argv;
while (--argc) {
if ((*++argv)[0] != '-') {
@@ -99,22 +97,22 @@ main(argc, argv)
case 'l':
++lflag;
continue;
+ case 'p':
+ ++pflag; /* chpass-tickets */
+ lifetime = CHPASSLIFE;
+ break;
default:
usage();
- exit(1);
}
}
if (username &&
- (k_errno = kname_parse(aname, inst, realm, username))
- != KSUCCESS) {
- fprintf(stderr, "%s: %s\n", progname, krb_err_txt[k_errno]);
+ (k_errno = kname_parse(aname, inst, realm, username)) != KSUCCESS) {
+ warnx("%s", krb_get_err_text(k_errno));
iflag = rflag = 1;
username = NULL;
}
- if (gethostname(buf, MAXHOSTNAMELEN)) {
- fprintf(stderr, "%s: gethostname failed\n", progname);
- exit(1);
- }
+ if (k_gethostname(buf, MAXHOSTNAMELEN))
+ errx(1, "k_gethostname failed");
printf("%s (%s)\n", ORGANIZATION, buf);
if (username) {
printf("Kerberos Initialization for \"%s", aname);
@@ -126,33 +124,24 @@ main(argc, argv)
} else {
printf("Kerberos Initialization\n");
printf("Kerberos name: ");
- get_input(aname, sizeof(aname), stdin);
- if (!*aname)
- exit(0);
- if (!k_isname(aname)) {
- fprintf(stderr, "%s: bad Kerberos name format\n",
- progname);
- exit(1);
- }
+ get_input(name, sizeof(name), stdin);
+ if (!*name)
+ return 0;
+ if ((k_errno = kname_parse(aname, inst, realm, name)) != KSUCCESS )
+ errx(1, "%s", krb_get_err_text(k_errno));
}
/* optional instance */
if (iflag) {
printf("Kerberos instance: ");
get_input(inst, sizeof(inst), stdin);
- if (!k_isinst(inst)) {
- fprintf(stderr, "%s: bad Kerberos instance format\n",
- progname);
- exit(1);
- }
+ if (!k_isinst(inst))
+ errx(1, "bad Kerberos instance format");
}
if (rflag) {
printf("Kerberos realm: ");
get_input(realm, sizeof(realm), stdin);
- if (!k_isrealm(realm)) {
- fprintf(stderr, "%s: bad Kerberos realm format\n",
- progname);
- exit(1);
- }
+ if (!k_isrealm(realm))
+ errx(1, "bad Kerberos realm format");
}
if (lflag) {
printf("Kerberos ticket lifetime (minutes): ");
@@ -161,24 +150,23 @@ main(argc, argv)
if (lifetime < 5)
lifetime = 1;
else
- lifetime /= krb_time_to_life(0, lifetime*60);
+ lifetime = krb_time_to_life(0, lifetime*60);
/* This should be changed if the maximum ticket lifetime */
/* changes */
if (lifetime > 255)
lifetime = 255;
}
- if (!*realm && krb_get_lrealm(realm, 1)) {
- fprintf(stderr, "%s: krb_get_lrealm failed\n", progname);
- exit(1);
- }
- k_errno = krb_get_pw_in_tkt(aname, inst, realm, "krbtgt", realm,
+ if (!*realm && krb_get_lrealm(realm, 1))
+ errx(1, "krb_get_lrealm failed");
+ k_errno = krb_get_pw_in_tkt(aname, inst, realm,
+ pflag ? PWSERV_NAME :
+ KRB_TICKET_GRANTING_TICKET,
+ pflag ? KADM_SINST : realm,
lifetime, 0);
if (vflag) {
printf("Kerberos realm %s:\n", realm);
- printf("%s\n", krb_err_txt[k_errno]);
- } else if (k_errno) {
- fprintf(stderr, "%s: %s\n", progname, krb_err_txt[k_errno]);
- exit(1);
- }
+ printf("%s\n", krb_get_err_text(k_errno));
+ } else if (k_errno)
+ errx(1, "%s", krb_get_err_text(k_errno));
exit(0);
}