aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/clients/kvno/ChangeLog11
-rw-r--r--src/clients/kvno/kvno.M7
-rw-r--r--src/clients/kvno/kvno.c33
3 files changed, 38 insertions, 13 deletions
diff --git a/src/clients/kvno/ChangeLog b/src/clients/kvno/ChangeLog
index 6751eb6..9a04ab4 100644
--- a/src/clients/kvno/ChangeLog
+++ b/src/clients/kvno/ChangeLog
@@ -1,3 +1,14 @@
+2004-08-31 Tom Yu <tlyu@mit.edu>
+
+ * kvno.M: Update usage.
+
+ * kvno.c (xusage): Update usage message.
+
+2004-08-20 Jeffrey Altman <jaltman@mit.edu>
+
+ * kvno.c: Add -c ccache command line option
+ use krb5_free_unparsed_name() instead of free()
+
2002-08-29 Ken Raeburn <raeburn@mit.edu>
* Makefile.in: Revert $(S)=>/ change, for Windows support.
diff --git a/src/clients/kvno/kvno.M b/src/clients/kvno/kvno.M
index e7c99f7..864f75e 100644
--- a/src/clients/kvno/kvno.M
+++ b/src/clients/kvno/kvno.M
@@ -28,7 +28,7 @@
.SH NAME
kvno \- print key version numbers of Kerberos principals
.SH SYNOPSIS
-\fBkvno\fP [\fB\-q\fP] [\fB\-h\fP] [\fB\-4\fP] [\fB\-e etype\fP]
+\fBkvno\fP [\fB\-q\fP] [\fB\-h\fP] [\fB\-4\fP\ |\ [\fB-c ccache\fP]\ [\fB\-e etype\fP]]
\fBservice1\fP \fBservice2\fP \fB...\fP
.br
.SH DESCRIPTION
@@ -37,7 +37,10 @@ acquires a service ticket for the specified Kerberos principals and
prints out the key version numbers of each.
.SH OPTIONS
.TP
-.B \-e
+.B \-c ccache
+specifies the name of a credentials cache to use (if not the default)
+.TP
+.B \-e etype
specifies the enctype which will be requested for the session key of
all the services named on the command line. This is useful in certain
backward compatibility situations.
diff --git a/src/clients/kvno/kvno.c b/src/clients/kvno/kvno.c
index 505a73c..c860eb7 100644
--- a/src/clients/kvno/kvno.c
+++ b/src/clients/kvno/kvno.c
@@ -39,9 +39,12 @@ static char *prog;
static void xusage()
{
#ifdef KRB5_KRB4_COMPAT
- fprintf(stderr, "xusage: %s [-4 | -e etype] service1 service2 ...\n", prog);
+ fprintf(stderr,
+ "usage: %s [-4 | [-c ccache] [-e etype]] service1 service2 ...\n",
+ prog);
#else
- fprintf(stderr, "xusage: %s [-e etype] service1 service2 ...\n", prog);
+ fprintf(stderr, "usage: %s [-c ccache] [-e etype] service1 service2 ...\n",
+ prog);
#endif
exit(1);
}
@@ -49,19 +52,23 @@ static void xusage()
int quiet = 0;
static void do_v4_kvno (int argc, char *argv[]);
-static void do_v5_kvno (int argc, char *argv[], char *etypestr);
+static void do_v5_kvno (int argc, char *argv[],
+ char *ccachestr, char *etypestr);
int main(int argc, char *argv[])
{
int option;
- char *etypestr = 0;
+ char *etypestr = 0, *ccachestr = 0;
int v4 = 0;
prog = strrchr(argv[0], '/');
prog = prog ? (prog + 1) : argv[0];
- while ((option = getopt(argc, argv, "e:hq4")) != -1) {
+ while ((option = getopt(argc, argv, "c:e:hq4")) != -1) {
switch (option) {
+ case 'c':
+ ccachestr = optarg;
+ break;
case 'e':
etypestr = optarg;
break;
@@ -83,13 +90,13 @@ int main(int argc, char *argv[])
if ((argc - optind) < 1)
xusage();
- if (etypestr != 0 && v4)
+ if ((ccachestr != 0 || etypestr != 0) && v4)
xusage();
if (v4)
do_v4_kvno(argc - optind, argv + optind);
else
- do_v5_kvno(argc - optind, argv + optind, etypestr);
+ do_v5_kvno(argc - optind, argv + optind, ccachestr, etypestr);
return 0;
}
@@ -142,7 +149,8 @@ static void do_v4_kvno (int count, char *names[])
}
#include <krb5.h>
-static void do_v5_kvno (int count, char *names[], char *etypestr)
+static void do_v5_kvno (int count, char *names[],
+ char * ccachestr, char *etypestr)
{
krb5_context context;
krb5_error_code ret;
@@ -170,7 +178,10 @@ static void do_v5_kvno (int count, char *names[], char *etypestr)
etype = 0;
}
- ret = krb5_cc_default(context, &ccache);
+ if (ccachestr)
+ ret = krb5_cc_resolve(context, ccachestr, &ccache);
+ else
+ ret = krb5_cc_default(context, &ccache);
if (ret) {
com_err(prog, ret, "while opening ccache");
exit(1);
@@ -216,7 +227,7 @@ static void do_v5_kvno (int count, char *names[], char *etypestr)
fprintf(stderr, "%s: %s while getting credentials\n",
princ, error_message(ret));
- free(princ);
+ krb5_free_unparsed_name(context, princ);
errors++;
continue;
@@ -229,7 +240,7 @@ static void do_v5_kvno (int count, char *names[], char *etypestr)
princ, error_message(ret));
krb5_free_creds(context, out_creds);
- free(princ);
+ krb5_free_unparsed_name(context, princ);
errors++;
continue;