]> andersk Git - openssh.git/commitdiff
- (dtucker) [auth.c openbsd-compat/port-aix.c] Bug #1207: always call
authordtucker <dtucker>
Wed, 30 Aug 2006 12:33:09 +0000 (12:33 +0000)
committerdtucker <dtucker>
Wed, 30 Aug 2006 12:33:09 +0000 (12:33 +0000)
   loginsuccess on AIX immediately after authentication to clear the failed
   login count.  Previously this would only happen when an interactive
   session starts (ie when a pty is allocated) but this means that accounts
   that have primarily non-interactive sessions (eg scp's) may gradually
   accumulate enough failures to lock out an account.  This change may have
   a side effect of creating two audit records, one with a tty of "ssh"
   corresponding to the authentication and one with the allocated pty per
   interactive session.

ChangeLog
auth.c
openbsd-compat/port-aix.c

index 6eb0086b684e8907f9fbf984c2962bd697a36cca..8f18cdac9852b60b9ac5f780ee06239f00ac7753 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
      [version.h]
      crank to 4.4
  - (djm) [openbsd-compat/xcrypt.c] needs unistd.h
+ - (dtucker) [auth.c openbsd-compat/port-aix.c] Bug #1207: always call
+   loginsuccess on AIX immediately after authentication to clear the failed
+   login count.  Previously this would only happen when an interactive
+   session starts (ie when a pty is allocated) but this means that accounts
+   that have primarily non-interactive sessions (eg scp's) may gradually
+   accumulate enough failures to lock out an account.  This change may have
+   a side effect of creating two audit records, one with a tty of "ssh"
+   corresponding to the authentication and one with the allocated pty per
+   interactive session.
 
 20060824
  - (dtucker) [openbsd-compat/basename.c] Include errno.h.
diff --git a/auth.c b/auth.c
index 5a02a43648322d9715643a93b166baaad259bf19..5da140b07513f4de2b8c11e8d7bf2c3a88994e80 100644 (file)
--- a/auth.c
+++ b/auth.c
@@ -279,6 +279,11 @@ auth_log(Authctxt *authctxt, int authenticated, char *method, char *info)
            strcmp(method, "challenge-response") == 0))
                record_failed_login(authctxt->user,
                    get_canonical_hostname(options.use_dns), "ssh");
+# ifdef WITH_AIXAUTHENTICATE
+       if (authenticated)
+               sys_auth_record_login(authctxt->user,
+                   get_canonical_hostname(options.use_dns), "ssh", &loginmsg);
+# endif
 #endif
 #ifdef SSH_AUDIT_EVENTS
        if (authenticated == 0 && !authctxt->postponed)
index a7ced57e9c6ad2d7f5377b8f0b762079602c7ad8..13a73e873cebbf27a2d42c457f83277c1f89d7a9 100644 (file)
@@ -265,15 +265,17 @@ sys_auth_record_login(const char *user, const char *host, const char *ttynm,
     Buffer *loginmsg)
 {
        char *msg = NULL;
+       static int msg_done = 0;
        int success = 0;
 
        aix_setauthdb(user);
        if (loginsuccess((char *)user, (char *)host, (char *)ttynm, &msg) == 0) {
                success = 1;
-               if (msg != NULL) {
+               if (msg != NULL && loginmsg != NULL && !msg_done) {
                        debug("AIX/loginsuccess: msg %s", msg);
                        buffer_append(loginmsg, msg, strlen(msg));
                        xfree(msg);
+                       msg_done = 1;
                }
        }
        aix_restoreauthdb();
This page took 0.97234 seconds and 5 git commands to generate.