Wed Jan 10 21:26:20 1996 Theodore Y. Ts'o <tytso@dcl>
+ * kcmd.c (getport): Clear the sin structure to be zero. (From
+ Doug Engbert.)
+
+ * krsh.c (main): Added code to default port to 544 if service not
+ found. (From Doug Engbert.)
+
+ * krlogin.c (main): Added code to default port to 543 or 2105 if
+ service not found. (From Doug Engbert.)
+
+ * login.c (main): Save KRB5CCNAME environment variable, which may
+ have been set by forward.c. Add code for SGI to set
+ environment for its /etc/TIMEZONE (untested). Don't print
+ MOTD twice on Suns, added #ifdef NO_MOTD. (Patches from
+ Doug Engbert).
+
* kcmd.c: Removed extern global of krb5_kdc_req_sumtype, which
wasn't being used anyway.
#endif
struct passwd *pwd;
struct servent *sp;
+ struct servent defaultservent = {0,0,0,0};
int uid, options = 0;
#ifdef POSIX_SIGNALS
struct sigaction sa;
else
sp = getservbyname("klogin","tcp");
if (sp == 0) {
- fprintf(stderr, "rlogin: %s/tcp: unknown service\n",
- encrypt_flag ? "eklogin" : "klogin");
-
- try_normal(orig_argv);
+ sp = &defaultservent; /* ANL */
+ sp->s_port = encrypt_flag ? htons(2105) : htons(543);
}
#else
sp = getservbyname("login", "tcp");
char tbuf[MAXPATHLEN + 2];
char *ttyname(), *stypeof(), *crypt(), *getpass();
time_t login_time;
+ char *ccname = 0; /* name of forwarded cache */
int retval;
off_t lseek();
(void)ioctl(0, TIOCSETC, (char *)&tc);
(void)ioctl(0, TIOCSETP, (char *)&sgttyb);
#endif
-
for (cnt = getdtablesize(); cnt > 2; cnt--)
(void) close(cnt);
}
#endif
+ ccname = getenv("KRB5CCNAME"); /* save cache */
+
/* destroy environment unless user has requested preservation */
envinit = (char **)malloc(MAXENVIRON * sizeof(char *));
if (envinit == 0) {
}
}
#endif
+/* Set login timezone for date information (PDG) */
+#ifdef __sgi__
+ {
+ FILE *fp;
+ if ((fp = fopen("/etc/TIMEZONE", "r")) != NULL) {
+ while(fgets(tbuf, sizeof(tbuf), fp)) {
+ if ((tbuf[0] == '#') || (strchr(tbuf, '=') == 0))
+ continue;
+ for (p = tbuf; *p; p++)
+ if (*p == '\n') {
+ *p = '\0';
+ break;
+ }
+ envinit[i++] = strsave(tbuf);
+ }
+ fclose(fp);
+ }
+ }
+#endif
+
sprintf(tbuf,"LOGNAME=%s",pwd->pw_name);
envinit[i++] = strsave(tbuf);
sprintf(tbuf,"LOGIN=%s",pwd->pw_name);
envinit[i++] = NULL;
+ if (ccname)
+ setenv("KRB5CCNAME", ccname, 0);
+
setenv("HOME", pwd->pw_dir, 0);
setenv("PATH", LPATH, 0);
setenv("USER", pwd->pw_name, 0);
if (!krbflag && !fflag && !Fflag && !eflag )
printf("\nWarning: No Kerberos tickets obtained.\n\n");
#endif /* KRB4 */
+#ifndef NO_MOTD
motd();
+#endif
(void)sprintf(tbuf, "%s/%s", MAILDIR, pwd->pw_name);
if (stat(tbuf, &st) == 0 && st.st_size != 0)
printf("You have %smail.\n",