summaryrefslogtreecommitdiff
path: root/libpam/pam_item.c
diff options
context:
space:
mode:
authorThorsten Kukuk <kukuk@thkukuk.de>2005-08-23 13:44:21 +0000
committerThorsten Kukuk <kukuk@thkukuk.de>2005-08-23 13:44:21 +0000
commit48f76ecb25bae6ab86468be253b17de38b55b08d (patch)
treead3b365b0f607537b0c46d92f34de4c1392fa57b /libpam/pam_item.c
parented5d20953e60da5aefb4214305e11810633567e8 (diff)
Relevant BUGIDs: none
Purpose of commit: new feature Commit summary: --------------- Change major version number back to "0". Add more patches from ALT-Linux/OWL:
Diffstat (limited to 'libpam/pam_item.c')
-rw-r--r--libpam/pam_item.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/libpam/pam_item.c b/libpam/pam_item.c
index 96e88247..ff35559e 100644
--- a/libpam/pam_item.c
+++ b/libpam/pam_item.c
@@ -50,10 +50,12 @@ int pam_set_item (pam_handle_t *pamh, int item_type, const void *item)
case PAM_USER:
RESET(pamh->user, item);
+ pamh->former.fail_user = PAM_SUCCESS;
break;
case PAM_USER_PROMPT:
RESET(pamh->prompt, item);
+ pamh->former.fail_user = PAM_SUCCESS;
break;
case PAM_TTY:
@@ -127,6 +129,7 @@ int pam_set_item (pam_handle_t *pamh, int item_type, const void *item)
memcpy(tconv, item, sizeof(struct pam_conv));
_pam_drop(pamh->pam_conversation);
pamh->pam_conversation = tconv;
+ pamh->former.fail_user = PAM_SUCCESS;
}
}
break;
@@ -254,6 +257,9 @@ int pam_get_user(pam_handle_t *pamh, const char **user, const char *prompt)
return PAM_SUCCESS;
}
+ if (pamh->former.fail_user != PAM_SUCCESS)
+ return pamh->former.fail_user;
+
/* will need a prompt */
use_prompt = prompt;
if (use_prompt == NULL) {
@@ -308,6 +314,7 @@ int pam_get_user(pam_handle_t *pamh, const char **user, const char *prompt)
*/
D(("pam_get_user: no response provided"));
retval = PAM_CONV_ERR;
+ pamh->former.fail_user = retval;
} else if (retval == PAM_SUCCESS) { /* copy the username */
/*
* now we set the PAM_USER item -- this was missing from pre.53
@@ -316,7 +323,8 @@ int pam_get_user(pam_handle_t *pamh, const char **user, const char *prompt)
*/
RESET(pamh->user, resp->resp);
*user = pamh->user;
- }
+ } else
+ pamh->former.fail_user = retval;
if (resp) {
/*