Treat keytab and ccache names without prefixes as type FILE:
authorJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 13 Apr 2004 20:08:40 +0000 (20:08 +0000)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Tue, 13 Apr 2004 20:08:40 +0000 (20:08 +0000)
  on Windows if there is a drive letter found at the beginning
  of the name.

ticket: new
tags: pullup

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@16246 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/krb5/ccache/ChangeLog
src/lib/krb5/ccache/ccbase.c
src/lib/krb5/keytab/ChangeLog
src/lib/krb5/keytab/ktbase.c

index afafc17a73dbd12abd72e727e4a0c21ba629fdaa..d24e8e11234e1fd4253327882b013676c8ac61a5 100644 (file)
@@ -1,3 +1,11 @@
+2004-04-13  Jeffrey Altman <jaltman@mit.edu>
+
+    * ccbase.c:
+      On Windows, if there is a ccache name provided without
+      a prefix but which appears to start with a drive letter,
+      treat it as a FILE: ccache instead of failing with a
+      ccache type unknown error.
+     
 2004-04-13  Jeffrey Altman <jaltman@mit.edu>
 
     * ccbase.c:
index 47ada5080bb41b0e77b28aaffd4ce61a913ef515..35032a5d19b9d954be2a00d33ae3c793f6eba42a 100644 (file)
@@ -119,14 +119,27 @@ krb5_cc_resolve (krb5_context context, const char *name, krb5_ccache *cache)
 
     pfxlen = cp - name;
 
-    resid = name + pfxlen + 1;
+#if defined(_WIN32)
+    if ( pfxlen == 1 && isalpha(name[0]) ) {
+        /* We found a drive letter not a prefix - use FILE: */
+        pfx = strdup("FILE:");
+        if (!pfx)
+            return ENOMEM;
+
+        resid = name;
+    } else {
+#endif
+        resid = name + pfxlen + 1;
 
-    pfx = malloc (pfxlen+1);
-    if (!pfx)
-        return ENOMEM;
+        pfx = malloc (pfxlen+1);
+        if (!pfx)
+            return ENOMEM;
 
-    memcpy (pfx, name, pfxlen);
-    pfx[pfxlen] = '\0';
+        memcpy (pfx, name, pfxlen);
+        pfx[pfxlen] = '\0';
+#if defined(_WIN32)
+    }
+#endif
 
     *cache = (krb5_ccache) 0;
 
index 6d84ccd70fb5ca6c0c81cae2c56972df55a86899..dd07ca64a66ec9751a5a02b62315d011af35e0f2 100644 (file)
@@ -1,3 +1,9 @@
+2004-04-13  Jeffrey Altman <jaltman@mit.edu>
+
+    * ktbase.c:  On Windows, improve the treat drive letter
+      prefix string as a FILE: keytab change to work if the
+      default keytab type was changed to not be of type FILE:
+
 2004-04-08  Jeffrey Altman <jaltman@mit.edu>
 
     * ktbase.c:  Restore the thread safety fixes
index 95a073965680178c6435e1374418a0dc034e9280..6c5d02a3f62148253768771d9007996b1afb4d07 100644 (file)
@@ -114,20 +114,26 @@ krb5_kt_resolve (krb5_context context, const char *name, krb5_keytab *ktid)
     pfxlen = cp - name;
 
 #if defined(_WIN32)
-    if ( pfxlen == 1 ) {
-        /* We found a drive letter not a prefix */
-        return (*krb5_kt_dfl_ops.resolve)(context, name, ktid);
-    }
+    if ( pfxlen == 1 && isalpha(name[0]) ) {
+        /* We found a drive letter not a prefix - use FILE: */
+        pfx = strdup("FILE:");
+        if (!pfx)
+            return ENOMEM;
+
+        resid = name;
+    } else {
 #endif
-
-    resid = name + pfxlen + 1;
+        resid = name + pfxlen + 1;
        
-    pfx = malloc (pfxlen+1);
-    if (!pfx)
-       return ENOMEM;
+        pfx = malloc (pfxlen+1);
+        if (!pfx)
+            return ENOMEM;
 
-    memcpy (pfx, name, pfxlen);
-    pfx[pfxlen] = '\0';
+        memcpy (pfx, name, pfxlen);
+        pfx[pfxlen] = '\0';
+#if defined(_WIN32)
+    }
+#endif
 
     *ktid = (krb5_keytab) 0;