Include the uid in the replay cachename
authorRichard Basch <probe@mit.edu>
Mon, 6 May 1996 16:19:33 +0000 (16:19 +0000)
committerRichard Basch <probe@mit.edu>
Mon, 6 May 1996 16:19:33 +0000 (16:19 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@7905 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/krb5/krb/ChangeLog
src/lib/krb5/krb/configure.in
src/lib/krb5/krb/srv_rcache.c

index 374796dc96e18817715b9d0b062cc7d1814e5548..4d1246968c0d174c3c9a2997e3dfd3babc27876a 100644 (file)
@@ -36,6 +36,13 @@ Thu May  2 22:48:56 1996  Mark Eichin  <eichin@cygnus.com>
        that specifies that the "invalid flag" doesn't get checked. (This
        version is only called from kdc_util.c:kdc_process_tgs_req.)
 
+Wed May  1 14:30:29 1996  Richard Basch  <basch@lehman.com>
+
+       * srv_rcache.c (krb5_get_server_rcache): include the uid in the
+               default server replay cachename, for systems with geteuid.
+
+       * configure.in: test if the system has geteuid()
+
 Wed May  1 02:26:53 1996  Mark Eichin  <eichin@cygnus.com>
 
        * str_conv.c (krb5_string_to_timestamp): double check that
index 7e3e2e9c4c2e232c68b02a0da4b333b83bb91c69..4a3ea5ab954c6be92695c82b551829bbd99b3c2e 100644 (file)
@@ -5,7 +5,7 @@ AC_PROG_ARCHIVE_ADD
 AC_PROG_RANLIB
 AC_HEADER_STDARG
 V5_SHARED_LIB_OBJS
-AC_HAVE_FUNCS(strftime strptime)
+AC_HAVE_FUNCS(strftime strptime geteuid)
 KRB5_RUN_FLAGS
 SubdirLibraryRule([$(OBJS)])
 USE_ANAME
index 59fd5e2a11504808c19979935bf3a4260956f0f9..ad9decc715acf63a7836b93da912e757c3677bcc 100644 (file)
@@ -39,6 +39,11 @@ krb5_get_server_rcache(context, piece, rcptr)
     char tmp[4];
     krb5_error_code retval;
     int len, p, i;
+
+#ifdef HAVE_GETEUID
+    unsigned long tens;
+    unsigned long uid = geteuid();
+#endif
     
     rcache = (krb5_rcache) malloc(sizeof(*rcache));
     if (!rcache)
@@ -55,6 +60,13 @@ krb5_get_server_rcache(context, piece, rcptr)
        else if (!isgraph(piece->data[i]))
            len += 3;
     }
+
+#ifdef HAVE_GETEUID
+    len += 2;  /* _<uid> */
+    for (tens = 1; (uid / tens) > 9 ; tens *= 10)
+       len++;
+#endif
+    
     cachename = malloc(len);
     if (!cachename) {
        retval = ENOMEM;
@@ -78,6 +90,15 @@ krb5_get_server_rcache(context, piece, rcptr)
        }
        cachename[p++] = piece->data[i];
     }
+
+#ifdef HAVE_GETEUID
+    cachename[p++] = '_';
+    while (tens) {
+       cachename[p++] = '0' + ((uid / tens) % 10);
+       tens /= 10;
+    }
+#endif
+
     cachename[p++] = '\0';
 
     if ((retval = krb5_rc_resolve(context, rcache, cachename)))