diff options
author | Thorsten Kukuk <kukuk@thkukuk.de> | 2005-08-23 13:44:21 +0000 |
---|---|---|
committer | Thorsten Kukuk <kukuk@thkukuk.de> | 2005-08-23 13:44:21 +0000 |
commit | 48f76ecb25bae6ab86468be253b17de38b55b08d (patch) | |
tree | ad3b365b0f607537b0c46d92f34de4c1392fa57b /libpam | |
parent | ed5d20953e60da5aefb4214305e11810633567e8 (diff) | |
download | pam-48f76ecb25bae6ab86468be253b17de38b55b08d.tar.gz pam-48f76ecb25bae6ab86468be253b17de38b55b08d.tar.bz2 pam-48f76ecb25bae6ab86468be253b17de38b55b08d.zip |
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')
-rw-r--r-- | libpam/Makefile.am | 2 | ||||
-rw-r--r-- | libpam/pam_item.c | 10 | ||||
-rw-r--r-- | libpam/pam_private.h | 1 |
3 files changed, 11 insertions, 2 deletions
diff --git a/libpam/Makefile.am b/libpam/Makefile.am index 9cf45e82..f33c3db3 100644 --- a/libpam/Makefile.am +++ b/libpam/Makefile.am @@ -14,7 +14,7 @@ include_HEADERS = $(addprefix include/security/, _pam_compat.h _pam_macros.h _pa noinst_HEADERS = pam_prelude.h pam_private.h pam_tokens.h -libpam_la_LDFLAGS = -no-undefined -version-info 1:0:0 +libpam_la_LDFLAGS = -no-undefined -version-info 81:0:81 if HAVE_VERSIONING libpam_la_LDFLAGS += -Wl,--version-script=libpam.map endif 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) { /* diff --git a/libpam/pam_private.h b/libpam/pam_private.h index 9d759ca9..53375bbb 100644 --- a/libpam/pam_private.h +++ b/libpam/pam_private.h @@ -122,6 +122,7 @@ struct _pam_former_state { int status; /* the status before returning incomplete */ /* state info used by pam_get_user() function */ + int fail_user; int want_user; char *prompt; /* saved prompt information */ |