Date: Mon, 5 Aug 2002 14:57:20 +0400 From: "Andrey A. Chernov" <ache@nagual.pp.ru> To: current@freebsd.org, des@freebsd.org Subject: CFR: openssh, login_cap bugfix, mail check adding patch Message-ID: <20020805105719.GA2404@nagual.pp.ru>
index | next in thread | raw e-mail
Please review.
1) Do all login cap calls _before_ all descriptors closed hardly, because
this may invalidate login cap calls especially when login.conf is
database.
2) Add traditional login-like mail check (see PR 41328)
(all this was in old openssh we have for ages but lost in the merge of new
version)
--- session.c.old Sat Jul 27 00:56:22 2002
+++ session.c Mon Aug 5 14:46:40 2002
@@ -1288,6 +1288,9 @@
const char *shell, *shell0, *hostname = NULL;
struct passwd *pw = s->pw;
u_int i;
+#ifdef HAVE_LOGIN_CAP
+ int lc_requirehome, lc_nocheckmail;
+#endif
/* remove hostkey from the child's memory */
destroy_sensitive_data();
@@ -1346,6 +1349,11 @@
/* XXX better use close-on-exec? -markus */
channel_close_all();
+#ifdef HAVE_LOGIN_CAP
+ lc_requirehome = login_getcapbool(lc, "requirehome", 0);
+ lc_nocheckmail = login_getcapbool(lc, "nocheckmail", 0);
+ login_close(lc);
+#endif
/*
* Close any extra file descriptors. Note that there may still be
* descriptors left by system functions. They will be closed later.
@@ -1384,7 +1392,7 @@
fprintf(stderr, "Could not chdir to home directory %s: %s\n",
pw->pw_dir, strerror(errno));
#ifdef HAVE_LOGIN_CAP
- if (login_getcapbool(lc, "requirehome", 0))
+ if (lc_requirehome)
exit(1);
#endif
}
@@ -1422,6 +1430,28 @@
errno = EINVAL;
perror(shell);
exit(1);
+ }
+
+ /*
+ * Check for mail if we have a tty.
+ */
+ if (s->ttyfd != -1
+#ifdef HAVE_LOGIN_CAP
+ && !lc_nocheckmail
+#endif
+ ) {
+ char *mailbox;
+ struct stat mailstat;
+
+ mailbox = getenv("MAIL");
+ if (mailbox != NULL) {
+ if (stat(mailbox, &mailstat) != 0 || mailstat.st_size == 0)
+ ;
+ else if (mailstat.st_mtime < mailstat.st_atime)
+ printf("You have mail.\n");
+ else
+ printf("You have new mail.\n");
+ }
}
/* Execute the shell. */
--
Andrey A. Chernov
http://ache.pp.ru/
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020805105719.GA2404>
