Fix KRB4 handling (was broken, just like kdc directory)
authorTheodore Tso <tytso@mit.edu>
Thu, 18 Aug 1994 23:03:05 +0000 (23:03 +0000)
committerTheodore Tso <tytso@mit.edu>
Thu, 18 Aug 1994 23:03:05 +0000 (23:03 +0000)
Fix bug to allow cross-realm forwarded credentials to work.

Store the forwarded credentials in a pid-dependent file, so that
different rlogin sessions get different credentials caches.

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

src/appl/bsd/ChangeLog
src/appl/bsd/Makefile.in
src/appl/bsd/configure.in
src/appl/bsd/forward.c

index fd97c143074bac405ffed8a777e93c79d58d4138..0e89c87d6a49814dc5fa9704cf4ee8e16d301e9f 100644 (file)
@@ -1,8 +1,25 @@
+Thu Aug 18 18:57:44 1994  Theodore Y. Ts'o  (tytso at tsx-11)
+
+       * Makefile.in:
+       * configure.in: Fix KRB4 handling; do it here in configure.in
+       instead of in Makefile.in
+
 Thu Aug 18 18:55:36 1994  Mark Eichin  (eichin@perdiem)
 
        * configure.in (LOGINLIBS): always substitute it, even if it isn't
        set.
 
+Thu Aug 18 17:09:36 1994  Theodore Y. Ts'o  (tytso at tsx-11)
+
+       * forward.c (get_for_creds): Fix bug to allow cross-realm
+       forwarded credentials to work.
+
+       * forward.c (rd_and_store_for_creds):  Store the forwarded
+       credentials in a file which is PID dependent, to allow for
+       different sessions in an rlogin session.
+
+       * Makefile: Add $(SETENVOBJ) to all programs that use forward.c
+
 Tue Aug 16 22:41:25 1994  Mark Eichin  (eichin@cygnus.com)
 
        * krlogind.c: add sys/ioctl.h.
index 5ea022a7c4967687c5be88fd1635383d25ffb8b4..06b1e054d6897ff021c951249bbd354f6c3c9ae5 100644 (file)
@@ -3,7 +3,7 @@ SETENVSRC=@SETENVSRC@
 SETENVOBJ=@SETENVOBJ@
 ISODELIB=@ISODELIB@
 COMERRLIB=$(BUILDTOP)/util/et/libcom_err.a
-K4LIB = $(KRB4)/lib/libkrb.a
+K4LIB = @K4LIB@
 KLIB = $(TOPLIBD)/libkrb5.a $(TOPLIBD)/libcrypto.a $(ISODELIB) $(COMERRLIB)
 
 LOGINLIBS = @LOGINLIBS@
@@ -22,32 +22,32 @@ DEFINES= $(RSH) $(RPROGS) \
 all:: rsh rcp rlogin krshd krlogind login.krb5
 clean:: rsh rcp rlogin krshd krlogind login.krb5
 
-rsh: krsh.o kcmd.o forward.o
-       $(CC) $(CFLAGS) -o rsh krsh.o kcmd.o forward.o $(KLIB) $(LIBS)
+rsh: krsh.o kcmd.o forward.o $(SETENVOBJ)
+       $(CC) $(CFLAGS) -o rsh krsh.o kcmd.o forward.o $(SETENVOBJ) $(KLIB) $(LIBS)
 
 install::
        $(INSTALL_PROGRAM) rsh $(DESTDIR)$(CLIENT_BINDIR)/rsh
 
-rcp: krcp.o kcmd.o forward.o $(LIBOBJS)
-       $(CC) $(CFLAGS) -o rcp krcp.o kcmd.o forward.o $(LIBOBJS) $(KLIB) $(LIBS)
+rcp: krcp.o kcmd.o forward.o $(SETENVOBJ) $(LIBOBJS)
+       $(CC) $(CFLAGS) -o rcp krcp.o kcmd.o forward.o $(SETENVOBJ) $(LIBOBJS) $(KLIB) $(LIBS)
 
 install::
        $(INSTALL_PROGRAM) rcp $(DESTDIR)$(CLIENT_BINDIR)/rcp
 
-rlogin: krlogin.o kcmd.o forward.o
-       $(CC) $(CFLAGS) -o rlogin krlogin.o kcmd.o forward.o $(KLIB) $(LIBS)
+rlogin: krlogin.o kcmd.o forward.o $(SETENVOBJ)
+       $(CC) $(CFLAGS) -o rlogin krlogin.o kcmd.o forward.o $(SETENVOBJ) $(KLIB) $(LIBS)
 
 install::
        $(INSTALL_PROGRAM) rlogin $(DESTDIR)$(CLIENT_BINDIR)/rlogin
 
-krshd: krshd.o kcmd.o logutil.o forward.o
-       $(CC) $(CFLAGS) -o krshd krshd.o kcmd.o logutil.o forward.o $(KLIB) $(K4LIB) $(LIBS)
+krshd: krshd.o kcmd.o logutil.o forward.o $(SETENVOBJ)
+       $(CC) $(CFLAGS) -o krshd krshd.o kcmd.o logutil.o forward.o $(SETENVOBJ) $(KLIB) $(K4LIB) $(LIBS)
 
 install::
        $(INSTALL_PROGRAM) krshd $(DESTDIR)$(SERVER_BINDIR)/krshd
 
-krlogind: krlogind.o logutil.o kcmd.o forward.o
-       $(CC) $(CFLAGS) -o krlogind krlogind.o logutil.o kcmd.o forward.o $(KLIB) $(K4LIB) $(LIBS)
+krlogind: krlogind.o logutil.o kcmd.o forward.o $(SETENVOBJ)
+       $(CC) $(CFLAGS) -o krlogind krlogind.o logutil.o kcmd.o forward.o $(SETENVOBJ) $(KLIB) $(K4LIB) $(LIBS)
 
 install::
        $(INSTALL_PROGRAM) krlogind $(DESTDIR)$(SERVER_BINDIR)/krlogind
index fc479edb65f5b4fe8a05bc906f8df20203c9b015..8002df1c42462a33ab0fbdaa7393fa0ec7909662 100644 (file)
@@ -67,6 +67,12 @@ AC_DEFINE(NO_UT_PID))
 KRB_INCLUDE
 WITH_KRB5ROOT
 WITH_KRB4
+AC_WITH([krb4],
+ADD_DEF(-DKRB5_KRB4_COMPAT)
+K4LIB='$(KRB4)/lib/libkrb.a',
+echo "warning: no krb4 backwards compatibility support"
+K4LIB=)
+AC_SUBST(K4LIB)
 AC_COMPILE_CHECK([setenv],
 [setenv();],[setenv("PATH","/bin",0)],,
 [SETENVSRC=setenv.c
index 877cd66b0d12ac9404f3b2f4a2a966b2726a06e0..47dd2adaa1eedfd8a82b826f6cf9db8a8fc223ce 100644 (file)
@@ -163,7 +163,7 @@ get_for_creds(etype, sumtype, rhost, client, enc_key, forwardable, outbuf)
       kdcoptions &= ~(KDC_OPT_FORWARDABLE);
 
     if (retval = krb5_send_tgs(kdcoptions, &creds.times, etype, sumtype,
-                              creds.server,
+                              tgt.server,
                               addrs,
                               creds.authdata,
                               0,               /* no padata */
@@ -393,8 +393,14 @@ rd_and_store_for_creds(inbuf, ticket, lusername)
        return -1;
     }
 
-    sprintf(ccname, "FILE:/tmp/krb5cc_%d", pwd->pw_uid);
-
+    /* Set the KRB5CCNAME ENV variable to keep sessions 
+     * seperate. Use the process id of this process which is 
+     * the rlogind or rshd. Set the environment variable as well.
+     */
+  
+    sprintf(ccname, "FILE:/tmp/krb5cc_p%d", getpid());
+    setenv("KRB5CCNAME", ccname, 0);
+  
     if (retval = krb5_cc_resolve(ccname, &ccache)) {
        return(retval);
     }