- (djm) Merge patch from Tim Waugh (via Nalin Dahyabhai <nalin@redhat.com>)
to fix NULL pointer deref and fake authloop breakage in PAM code.
This commit is contained in:
parent
f569241db2
commit
22e22bf9ba
|
@ -17,6 +17,8 @@
|
||||||
- markus@cvs.openbsd.org 2001/01/18 17:12:43
|
- markus@cvs.openbsd.org 2001/01/18 17:12:43
|
||||||
[auth-chall.c auth2-chall.c]
|
[auth-chall.c auth2-chall.c]
|
||||||
rename *-skey.c *-chall.c since the files are not skey specific
|
rename *-skey.c *-chall.c since the files are not skey specific
|
||||||
|
- (djm) Merge patch from Tim Waugh (via Nalin Dahyabhai <nalin@redhat.com>)
|
||||||
|
to fix NULL pointer deref and fake authloop breakage in PAM code.
|
||||||
|
|
||||||
20010118
|
20010118
|
||||||
- (bal) Super Sized OpenBSD Resync
|
- (bal) Super Sized OpenBSD Resync
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
#include "xmalloc.h"
|
#include "xmalloc.h"
|
||||||
#include "servconf.h"
|
#include "servconf.h"
|
||||||
|
|
||||||
RCSID("$Id: auth-pam.c,v 1.20 2000/12/20 02:34:49 djm Exp $");
|
RCSID("$Id: auth-pam.c,v 1.21 2001/01/19 04:46:38 djm Exp $");
|
||||||
|
|
||||||
#define NEW_AUTHTOK_MSG \
|
#define NEW_AUTHTOK_MSG \
|
||||||
"Warning: Your password has expired, please change it now"
|
"Warning: Your password has expired, please change it now"
|
||||||
|
@ -323,13 +323,13 @@ void finish_pam(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Start PAM authentication for specified account */
|
/* Start PAM authentication for specified account */
|
||||||
void start_pam(struct passwd *pw)
|
void start_pam(const char *user)
|
||||||
{
|
{
|
||||||
int pam_retval;
|
int pam_retval;
|
||||||
|
|
||||||
debug("Starting up PAM with username \"%.200s\"", pw->pw_name);
|
debug("Starting up PAM with username \"%.200s\"", user);
|
||||||
|
|
||||||
pam_retval = pam_start(SSHD_PAM_SERVICE, pw->pw_name, &conv, &pamh);
|
pam_retval = pam_start(SSHD_PAM_SERVICE, user, &conv, &pamh);
|
||||||
|
|
||||||
if (pam_retval != PAM_SUCCESS) {
|
if (pam_retval != PAM_SUCCESS) {
|
||||||
fatal("PAM initialisation failed[%d]: %.200s",
|
fatal("PAM initialisation failed[%d]: %.200s",
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
#include <pwd.h> /* For struct passwd */
|
#include <pwd.h> /* For struct passwd */
|
||||||
|
|
||||||
void start_pam(struct passwd *pw);
|
void start_pam(const char *user);
|
||||||
void finish_pam(void);
|
void finish_pam(void);
|
||||||
int auth_pam_password(struct passwd *pw, const char *password);
|
int auth_pam_password(struct passwd *pw, const char *password);
|
||||||
char **fetch_pam_environment(void);
|
char **fetch_pam_environment(void);
|
||||||
|
|
2
auth1.c
2
auth1.c
|
@ -414,7 +414,7 @@ do_authentication()
|
||||||
|
|
||||||
#ifdef USE_PAM
|
#ifdef USE_PAM
|
||||||
if (pw)
|
if (pw)
|
||||||
start_pam(pw);
|
start_pam(user);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
RCSID("$Id: auth2-pam.c,v 1.3 2001/01/19 04:26:52 mouring Exp $");
|
RCSID("$Id: auth2-pam.c,v 1.4 2001/01/19 04:46:38 djm Exp $");
|
||||||
|
|
||||||
#ifdef USE_PAM
|
#ifdef USE_PAM
|
||||||
#include "ssh.h"
|
#include "ssh.h"
|
||||||
|
@ -36,10 +36,8 @@ auth2_pam(Authctxt *authctxt)
|
||||||
if (authctxt->user == NULL)
|
if (authctxt->user == NULL)
|
||||||
fatal("auth2_pam: internal error: no user");
|
fatal("auth2_pam: internal error: no user");
|
||||||
|
|
||||||
if (authctxt->valid) {
|
conv2.appdata_ptr = authctxt;
|
||||||
conv2.appdata_ptr = authctxt;
|
pam_set_conv(&conv2);
|
||||||
pam_set_conv(&conv2);
|
|
||||||
}
|
|
||||||
|
|
||||||
dispatch_set(SSH2_MSG_USERAUTH_INFO_RESPONSE,
|
dispatch_set(SSH2_MSG_USERAUTH_INFO_RESPONSE,
|
||||||
&input_userauth_info_response_pam);
|
&input_userauth_info_response_pam);
|
||||||
|
|
5
auth2.c
5
auth2.c
|
@ -210,10 +210,13 @@ input_userauth_request(int type, int plen, void *ctxt)
|
||||||
authctxt->valid = 1;
|
authctxt->valid = 1;
|
||||||
debug2("input_userauth_request: setting up authctxt for %s", user);
|
debug2("input_userauth_request: setting up authctxt for %s", user);
|
||||||
#ifdef USE_PAM
|
#ifdef USE_PAM
|
||||||
start_pam(pw);
|
start_pam(pw->pw_name);
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
log("input_userauth_request: illegal user %s", user);
|
log("input_userauth_request: illegal user %s", user);
|
||||||
|
#ifdef USE_PAM
|
||||||
|
start_pam("NOUSER");
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
authctxt->user = xstrdup(user);
|
authctxt->user = xstrdup(user);
|
||||||
authctxt->service = xstrdup(service);
|
authctxt->service = xstrdup(service);
|
||||||
|
|
Loading…
Reference in New Issue