]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
- (djm) Bug #178: On AIX /etc/nologin wasnt't shown to users. Fix from
authorDamien Miller <djm@mindrot.org>
Tue, 7 Jan 2003 06:38:58 +0000 (17:38 +1100)
committerDamien Miller <djm@mindrot.org>
Tue, 7 Jan 2003 06:38:58 +0000 (17:38 +1100)
   Ralf.Wenk@fh-karlsruhe.de and dtucker@zip.com.au

ChangeLog
auth.c
session.c

index 0c7bfaca0261c0c2ba4e51b793eb1741fffd2254..890b16210ea9a4c75c0f55ff3fbe95d2e4a2e442 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -10,6 +10,8 @@
    on one by peak@argo.troja.mff.cuni.cz
  - (djm) Bug #111: Run syslog and stderr logging through strnvis to eliminate
    nasties. Report from peak@argo.troja.mff.cuni.cz
+ - (djm) Bug #178: On AIX /etc/nologin wasnt't shown to users. Fix from 
+   Ralf.Wenk@fh-karlsruhe.de and dtucker@zip.com.au
 
 20030103
  - (djm) Bug #461: ssh-copy-id fails with no arguments. Patch from 
      save auth method before monitor_reset_key_state(); bugzilla bug #284;
      ok provos@
 
-$Id: ChangeLog,v 1.2546 2003/01/07 06:04:18 djm Exp $
+$Id: ChangeLog,v 1.2547 2003/01/07 06:38:58 djm Exp $
diff --git a/auth.c b/auth.c
index ee21149dfa6747e6ddcbf5161b8dee20fab8b8f1..7deded205cf890a995db740b6819ddb2db63531d 100644 (file)
--- a/auth.c
+++ b/auth.c
@@ -218,6 +218,8 @@ allowed_user(struct passwd * pw)
         */
        if ( (pw->pw_uid != 0) && (geteuid() == 0) &&
            loginrestrictions(pw->pw_name, S_RLOGIN, NULL, &loginmsg) != 0) {
+               int loginrestrict_errno = errno;
+
                if (loginmsg && *loginmsg) {
                        /* Remove embedded newlines (if any) */
                        char *p;
@@ -227,9 +229,13 @@ allowed_user(struct passwd * pw)
                        }
                        /* Remove trailing newline */
                        *--p = '\0';
-                       log("Login restricted for %s: %.100s", pw->pw_name, loginmsg);
+                       log("Login restricted for %s: %.100s", pw->pw_name, 
+                           loginmsg);
                }
-               return 0;
+               /* Don't fail if /etc/nologin  set */
+               if (!(loginrestrict_errno == EPERM && 
+                   stat(_PATH_NOLOGIN, &st) == 0))
+                       return 0;
        }
 #endif /* WITH_AIXAUTHENTICATE */
 
index 9832d7a834c5410b7e90e5a09642bd2b3ebfafcb..c16cdcc13399260f62f0de7dd0ed85258df2e9eb 100644 (file)
--- a/session.c
+++ b/session.c
@@ -1194,6 +1194,7 @@ do_nologin(struct passwd *pw)
                while (fgets(buf, sizeof(buf), f))
                        fputs(buf, stderr);
                fclose(f);
+               fflush(NULL);
                exit(254);
        }
 }