From 1b394137a823a11fdd3796d9a8e4f64608ef8323 Mon Sep 17 00:00:00 2001 From: dtucker Date: Thu, 31 Mar 2005 11:39:25 +0000 Subject: [PATCH] - (dtucker) [auth.h sshd.c openbsd-compat/port-aix.c] Bug #1006: fix bug in handling of password expiry messages returned by AIX's authentication routines, originally reported by robvdwal at sara.nl. --- ChangeLog | 3 +++ auth.h | 4 ++++ openbsd-compat/port-aix.c | 4 ++-- sshd.c | 2 ++ 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1e57a06e..5b318dc3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -12,6 +12,9 @@ - jmc@cvs.openbsd.org 2005/03/18 17:05:00 [sshd_config.5] typo; + - (dtucker) [auth.h sshd.c openbsd-compat/port-aix.c] Bug #1006: fix bug in + handling of password expiry messages returned by AIX's authentication + routines, originally reported by robvdwal at sara.nl. 20050329 - (dtucker) [contrib/aix/buildbff.sh] Bug #1005: Look up only the user we're diff --git a/auth.h b/auth.h index 8d1f9340..471404e4 100644 --- a/auth.h +++ b/auth.h @@ -30,6 +30,7 @@ #include "key.h" #include "hostfile.h" +#include "buffer.h" #include #ifdef HAVE_LOGIN_CAP @@ -68,6 +69,7 @@ struct Authctxt { char *krb5_ticket_file; char *krb5_ccname; #endif + Buffer *loginmsg; void *methoddata; }; /* @@ -185,6 +187,8 @@ void auth_debug_reset(void); struct passwd *fakepw(void); +int sys_auth_passwd(Authctxt *, const char *); + #define AUTH_FAIL_MSG "Too many authentication failures for %.100s" #define SKEY_PROMPT "\nS/Key Password: " diff --git a/openbsd-compat/port-aix.c b/openbsd-compat/port-aix.c index fa6a4ff7..cf5d4b9a 100644 --- a/openbsd-compat/port-aix.c +++ b/openbsd-compat/port-aix.c @@ -151,7 +151,7 @@ aix_valid_authentications(const char *user) * returns 0. */ int -sys_auth_passwd(Authctxt *ctxt, const char *password, Buffer *loginmsg) +sys_auth_passwd(Authctxt *ctxt, const char *password) { char *authmsg = NULL, *msg, *name = ctxt->pw->pw_name; int authsuccess = 0, expired, reenter, result; @@ -181,7 +181,7 @@ sys_auth_passwd(Authctxt *ctxt, const char *password, Buffer *loginmsg) */ expired = passwdexpired(name, &msg); if (msg && *msg) { - buffer_append(loginmsg, msg, strlen(msg)); + buffer_append(ctxt->loginmsg, msg, strlen(msg)); aix_remove_embedded_newlines(msg); } debug3("AIX/passwdexpired returned %d msg %.100s", expired, msg); diff --git a/sshd.c b/sshd.c index 11d618d1..b3fcc696 100644 --- a/sshd.c +++ b/sshd.c @@ -1673,6 +1673,8 @@ main(int ac, char **av) authctxt = xmalloc(sizeof(*authctxt)); memset(authctxt, 0, sizeof(*authctxt)); + authctxt->loginmsg = &loginmsg; + /* XXX global for cleanup, access from other modules */ the_authctxt = authctxt; -- 2.45.2