krlogind.c krshd.c:
authorRichard Basch <probe@mit.edu>
Thu, 9 May 1996 16:01:08 +0000 (16:01 +0000)
committerRichard Basch <probe@mit.edu>
Thu, 9 May 1996 16:01:08 +0000 (16:01 +0000)
Use the default service principal as the basis for the rcache name.
login.c:
SVR4 systems typically do not do mail/motd checks in login; they
do it in the profiles (/etc/profile).  Follow that convention...

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

src/appl/bsd/ChangeLog
src/appl/bsd/krlogind.c
src/appl/bsd/krshd.c
src/appl/bsd/login.c

index 21e8a1277c6c4b04ab4dd893c5a7a7f34ea3a387..25ac1615278be1f677754c713ee0b7b8c3d29697 100644 (file)
@@ -1,3 +1,14 @@
+Thu May  9 00:09:14 1996  Richard Basch  <basch@lehman.com>
+
+       * krlogind.c krshd.c:
+       Use the replay cache associated with the default server name
+       (rc_host*), like telnetd does.
+
+Mon May  6 14:06:21 1996  Richard Basch  <basch@lehman.com>
+
+       * login.c: SVR4 logins do not do motd or mailcheck normally; that
+       is a function of /etc/profile.  login.krb should act the same...
+
 Mon Apr 29 17:02:44 1996  Ken Raeburn  <raeburn@cygnus.com>
 
        Merge with Cygnus sources, changes from Mark Eichin, Marc
index 0a44c8debf2ce1b1fc58ffe53256e3b590c1e8dc..f016fcd7bf346df1c64d1f5cbbe35775976e7985 100644 (file)
@@ -1413,6 +1413,7 @@ recvauth(valid_checksum)
     char v4_instance[INST_SZ]; /* V4 Instance */
     char v4_version[9];
     krb5_authenticator *authenticator;
+    krb5_rcache rcache;
 
     *valid_checksum = 0;
     len = sizeof(laddr);
@@ -1436,6 +1437,26 @@ recvauth(valid_checksum)
                 KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR)))
        return status;
 
+    status = krb5_auth_con_getrcache(bsd_context, auth_context, &rcache);
+    if (status) return status;
+
+    if (! rcache) {
+       krb5_principal server;
+
+       status = krb5_sname_to_principal(bsd_context, 0, 0,
+                                        KRB5_NT_SRV_HST, &server);
+       if (status) return status;
+
+       status = krb5_get_server_rcache(bsd_context,
+                               krb5_princ_component(bsd_context, server, 0),
+                               &rcache);
+       krb5_free_principal(bsd_context, server);
+       if (status) return status;
+
+       status = krb5_auth_con_setrcache(bsd_context, auth_context, rcache);
+       if (status) return status;
+    }
+
     if ((status = krb5_compat_recvauth(bsd_context, &auth_context, &netf,
                                  "KCMDV0.1",
                                  NULL,         /* Specify daemon principal */
index 64b1b2974e28aad685915416ef4d1b10c3650c03..74e701db9ac3013c9f7273bedea781a023b51ed1 100644 (file)
@@ -1682,8 +1682,9 @@ recvauth(netf, peersin, valid_checksum)
     krb5_data inbuf;
     char v4_instance[INST_SZ]; /* V4 Instance */
     char v4_version[9];
-krb5_authenticator *authenticator;
+    krb5_authenticator *authenticator;
     krb5_ticket        *ticket;
+    krb5_rcache                rcache;
 
     *valid_checksum = 0;
     len = sizeof(laddr);
@@ -1706,6 +1707,26 @@ krb5_authenticator *authenticator;
                        KRB5_AUTH_CONTEXT_GENERATE_REMOTE_FULL_ADDR))
        return status;
 
+    status = krb5_auth_con_getrcache(bsd_context, auth_context, &rcache);
+    if (status) return status;
+
+    if (! rcache) {
+       krb5_principal server;
+
+       status = krb5_sname_to_principal(bsd_context, 0, 0,
+                                        KRB5_NT_SRV_HST, &server);
+       if (status) return status;
+
+       status = krb5_get_server_rcache(bsd_context,
+                               krb5_princ_component(bsd_context, server, 0),
+                               &rcache);
+       krb5_free_principal(bsd_context, server);
+       if (status) return status;
+
+       status = krb5_auth_con_setrcache(bsd_context, auth_context, rcache);
+       if (status) return status;
+    }
+
     status = krb5_compat_recvauth(bsd_context, &auth_context, &netf,
                                  "KCMDV0.1",
                                  NULL,         /* Specify daemon principal */
index 778d73d4e1a33084253016f249e7d5da0446f334..34bbaec9142dc7bd3c76a17e723974b5b22aeb45 100644 (file)
@@ -260,6 +260,11 @@ extern int errno;
                                           passsword */
 #endif /* KRB4_GET_TICKETS */
 
+#ifdef __SVR4
+#define NO_MOTD
+#define NO_MAILCHECK
+#endif
+
 char *getenv();
 void dofork();
 
@@ -1994,6 +1999,7 @@ void motd()
 void motd () { }
 #endif
 
+#ifndef NO_MAILCHECK
 void check_mail ()
 {
     char tbuf[MAXPATHLEN+2];
@@ -2003,6 +2009,9 @@ void check_mail ()
        printf("You have %smail.\n",
               (st.st_mtime > st.st_atime) ? "new " : "");
 }
+#else
+void check_mail () { }
+#endif
 
 void checknologin()
 {