diff options
author | Thorsten Kukuk <kukuk@thkukuk.de> | 2008-12-11 19:41:49 +0000 |
---|---|---|
committer | Thorsten Kukuk <kukuk@thkukuk.de> | 2008-12-11 19:41:49 +0000 |
commit | a1131337d71a61da5b3b5e129545d3257a709480 (patch) | |
tree | a2a9c49346bcb8912b31916f40f96d67479f0c36 /libpam/pam_get_authtok.c | |
parent | 300b741a23d95cd44fa391905d6edce8340c8fee (diff) | |
download | pam-a1131337d71a61da5b3b5e129545d3257a709480.tar.gz pam-a1131337d71a61da5b3b5e129545d3257a709480.tar.bz2 pam-a1131337d71a61da5b3b5e129545d3257a709480.zip |
Relevant BUGIDs:
Purpose of commit: new feature
Commit summary:
---------------
2008-12-10 Thorsten Kukuk <kukuk@thkukuk.de>
* doc/man/pam_item_types_ext.inc.xml: Document PAM_AUTHTOK_TYPE.
* libpam/pam_end.c (pam_end): Free authtok_type.
* tests/tst-pam_get_item.c: Add PAM_AUTHTOK_TYPE
as test case.
* tests/tst-pam_set_item.c: Likewise.
* libpam/pam_start.c (pam_start): Initialize xdisplay,
xauth and authtok_type.
* libpam/pam_get_authtok.c (pam_get_authtok): Rename "type"
to "authtok_type".
* modules/pam_cracklib/pam_cracklib.8.xml: Replace "type=" with
"authtok_type=".
* doc/man/pam_get_authtok.3.xml: Document authtok_type argument.
* modules/pam_cracklib/pam_cracklib.c (pam_sm_chauthtok): Set
type= argument as PAM_AUTHTOK_TYPE item.
* libpam/pam_get_authtok.c (pam_get_authtok): If no type
argument given, use PAM_AUTHTOK_TYPE item.
* libpam/pam_item.c (pam_get_item): Fetch PAM_AUTHTOK_TYPE item.
(pam_set_item): Store PAM_AUTHTOK_TYPE item.
* libpam/pam_private.h: Add authtok_type to pam_handle.
* libpam/include/security/_pam_types.h (PAM_AUTHTOK_TYPE): New.
Diffstat (limited to 'libpam/pam_get_authtok.c')
-rw-r--r-- | libpam/pam_get_authtok.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/libpam/pam_get_authtok.c b/libpam/pam_get_authtok.c index 83b3f530..9e9f8409 100644 --- a/libpam/pam_get_authtok.c +++ b/libpam/pam_get_authtok.c @@ -77,7 +77,7 @@ pam_get_authtok (pam_handle_t *pamh, int item, const char **authtok, { char *resp[2] = {NULL, NULL}; const void* prevauthtok; - const char *type = ""; + const char *authtok_type = ""; int ask_twice = 0; /* Password change, ask twice for it */ int retval; @@ -89,9 +89,13 @@ pam_get_authtok (pam_handle_t *pamh, int item, const char **authtok, if (item == PAM_AUTHTOK && pamh->choice == PAM_CHAUTHTOK) { ask_twice = 1; - type = get_option (pamh, "type"); - if (type == NULL) - type = ""; + authtok_type = get_option (pamh, "authtok_type"); + if (authtok_type == NULL) + { + retval = pam_get_item (pamh, PAM_AUTHTOK_TYPE, (const void **)&authtok_type); + if (retval != PAM_SUCCESS || authtok_type == NULL) + authtok_type = ""; + } } retval = pam_get_item (pamh, item, &prevauthtok); @@ -125,12 +129,12 @@ pam_get_authtok (pam_handle_t *pamh, int item, const char **authtok, else if (ask_twice) { retval = pam_prompt (pamh, PAM_PROMPT_ECHO_OFF, &resp[0], - PROMPT1, type, - strlen (type) > 0?" ":""); + PROMPT1, authtok_type, + strlen (authtok_type) > 0?" ":""); if (retval == PAM_SUCCESS && ask_twice && resp[0] != NULL) retval = pam_prompt (pamh, PAM_PROMPT_ECHO_OFF, &resp[1], - PROMPT2, type, - strlen (type) > 0?" ":""); + PROMPT2, authtok_type, + strlen (authtok_type) > 0?" ":""); } else retval = pam_prompt (pamh, PAM_PROMPT_ECHO_OFF, &resp[0], "%s", |