diff options
Diffstat (limited to 'auth-pam.c')
-rw-r--r-- | auth-pam.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/auth-pam.c b/auth-pam.c index 0446cd559..fb9ae954a 100644 --- a/auth-pam.c +++ b/auth-pam.c | |||
@@ -47,7 +47,7 @@ | |||
47 | 47 | ||
48 | /* Based on $FreeBSD: src/crypto/openssh/auth2-pam-freebsd.c,v 1.11 2003/03/31 13:48:18 des Exp $ */ | 48 | /* Based on $FreeBSD: src/crypto/openssh/auth2-pam-freebsd.c,v 1.11 2003/03/31 13:48:18 des Exp $ */ |
49 | #include "includes.h" | 49 | #include "includes.h" |
50 | RCSID("$Id: auth-pam.c,v 1.126 2005/07/17 07:18:50 djm Exp $"); | 50 | RCSID("$Id: auth-pam.c,v 1.128 2006/01/29 05:46:13 dtucker Exp $"); |
51 | 51 | ||
52 | #ifdef USE_PAM | 52 | #ifdef USE_PAM |
53 | #if defined(HAVE_SECURITY_PAM_APPL_H) | 53 | #if defined(HAVE_SECURITY_PAM_APPL_H) |
@@ -716,8 +716,18 @@ sshpam_query(void *ctx, char **name, char **info, | |||
716 | plen++; | 716 | plen++; |
717 | xfree(msg); | 717 | xfree(msg); |
718 | break; | 718 | break; |
719 | case PAM_SUCCESS: | ||
720 | case PAM_AUTH_ERR: | 719 | case PAM_AUTH_ERR: |
720 | debug3("PAM: PAM_AUTH_ERR"); | ||
721 | if (**prompts != NULL && strlen(**prompts) != 0) { | ||
722 | *info = **prompts; | ||
723 | **prompts = NULL; | ||
724 | *num = 0; | ||
725 | **echo_on = 0; | ||
726 | ctxt->pam_done = -1; | ||
727 | return 0; | ||
728 | } | ||
729 | /* FALLTHROUGH */ | ||
730 | case PAM_SUCCESS: | ||
721 | if (**prompts != NULL) { | 731 | if (**prompts != NULL) { |
722 | /* drain any accumulated messages */ | 732 | /* drain any accumulated messages */ |
723 | debug("PAM: %s", **prompts); | 733 | debug("PAM: %s", **prompts); |
@@ -763,7 +773,7 @@ sshpam_respond(void *ctx, u_int num, char **resp) | |||
763 | Buffer buffer; | 773 | Buffer buffer; |
764 | struct pam_ctxt *ctxt = ctx; | 774 | struct pam_ctxt *ctxt = ctx; |
765 | 775 | ||
766 | debug2("PAM: %s entering, %d responses", __func__, num); | 776 | debug2("PAM: %s entering, %u responses", __func__, num); |
767 | switch (ctxt->pam_done) { | 777 | switch (ctxt->pam_done) { |
768 | case 1: | 778 | case 1: |
769 | sshpam_authenticated = 1; | 779 | sshpam_authenticated = 1; |