pull up r24123 from trunk
authorTom Yu <tlyu@mit.edu>
Thu, 10 Jun 2010 21:14:34 +0000 (21:14 +0000)
committerTom Yu <tlyu@mit.edu>
Thu, 10 Jun 2010 21:14:34 +0000 (21:14 +0000)
 ------------------------------------------------------------------------
 r24123 | ghudson | 2010-06-08 14:18:03 -0400 (Tue, 08 Jun 2010) | 11 lines

 ticket: 6740
 subject: kadmin ktadd may display wrong name of default keytab
 target_version: 1.8.2
 tags: pullup

 kadmin's ktadd (and ktrem) displays WRFILE:/etc/krb5.keytab whenever
 it uses the default keytab, even if the default has been overridden
 (e.g. by KRB5_KTNAME).  Use krb5_kt_get_name to get the correct name
 of the default cache instead of displaying the string we think was
 used to open it.

ticket: 6740
version_fixed: 1.8.3
status: resolved

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-8@24131 dc483132-0cff-0310-8789-dd5450dbe970

src/kadmin/cli/kadmin.h
src/kadmin/cli/keytab.c

index 5c9decc7daccc0615e7638a602dfe041e4a5ebd0..9f657a646f19cf96a6c4d305acccc38f3266b382 100644 (file)
@@ -68,7 +68,6 @@ extern time_t get_date(char *);
 
 /* Yucky global variables */
 extern krb5_context context;
-extern char *krb5_defkeyname;
 extern char *whoami;
 extern void *handle;
 
index 8d14f860a620414c870d9894d12f3761acfc6027..1f810324beed6095eb47653d9ad03336669de73b 100644 (file)
@@ -84,9 +84,7 @@ process_keytab(krb5_context my_context, char **keytab_str,
     char *name = *keytab_str;
 
     if (name == NULL) {
-        /* XXX krb5_defkeyname is an internal library global and
-           should go away */
-        name = strdup(krb5_defkeyname);
+        name = malloc(BUFSIZ);
         if (!name) {
             com_err(whoami, ENOMEM, "while creating keytab name");
             return 1;
@@ -97,6 +95,12 @@ process_keytab(krb5_context my_context, char **keytab_str,
             free(name);
             return 1;
         }
+        code = krb5_kt_get_name(my_context, *keytab, name, BUFSIZ);
+        if (code != 0) {
+            com_err(whoami, code, "while getting keytab name");
+            free(name);
+            return 1;
+        }
     } else {
         if (strchr(name, ':') != NULL)
             name = strdup(name);