From a079e9fa4c076594f85d8691b33812e6c88e1406 Mon Sep 17 00:00:00 2001 From: Tomas Mraz Date: Tue, 9 Feb 2010 15:08:59 +0000 Subject: [PATCH] Relevant BUGIDs: Purpose of commit: bugfix Commit summary: --------------- 2010-02-09 Tomas Mraz * libpam/pam_get_authtok.c (pam_get_authtok_internal): Fix regression in the new password prompt. --- ChangeLog | 5 +++++ libpam/pam_get_authtok.c | 19 ++++++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/ChangeLog b/ChangeLog index 18305505..2ebf1d92 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2010-02-09 Tomas Mraz + + * libpam/pam_get_authtok.c (pam_get_authtok_internal): Fix + regression in the new password prompt. + 2010-01-04 Elad * po/he.po: New translation to Hebrew. diff --git a/libpam/pam_get_authtok.c b/libpam/pam_get_authtok.c index 43e33a3c..ecd29910 100644 --- a/libpam/pam_get_authtok.c +++ b/libpam/pam_get_authtok.c @@ -81,7 +81,7 @@ pam_get_authtok_internal (pam_handle_t *pamh, int item, char *resp[2] = {NULL, NULL}; const void *prevauthtok; const char *authtok_type = ""; - int ask_twice = 0; /* Password change, ask twice for it */ + int chpass = 0; /* Password change, ask twice for it */ int retval; if (authtok == NULL) @@ -91,8 +91,9 @@ pam_get_authtok_internal (pam_handle_t *pamh, int item, which needs to be verified. */ if (item == PAM_AUTHTOK && pamh->choice == PAM_CHAUTHTOK) { + chpass = 1; if (!(flags & PAM_GETAUTHTOK_NOVERIFY)) - ask_twice = 1; + ++chpass; authtok_type = get_option (pamh, "authtok_type"); if (authtok_type == NULL) @@ -110,11 +111,11 @@ pam_get_authtok_internal (pam_handle_t *pamh, int item, return PAM_SUCCESS; } else if (get_option (pamh, "use_first_pass") || - (ask_twice && get_option (pamh, "use_authtok"))) + (chpass && get_option (pamh, "use_authtok"))) { if (prevauthtok == NULL) { - if (ask_twice) + if (chpass) return PAM_AUTHTOK_ERR; else return PAM_AUTH_ERR; @@ -127,16 +128,16 @@ pam_get_authtok_internal (pam_handle_t *pamh, int item, { retval = pam_prompt (pamh, PAM_PROMPT_ECHO_OFF, &resp[0], "%s", prompt); - if (retval == PAM_SUCCESS && ask_twice && resp[0] != NULL) + if (retval == PAM_SUCCESS && chpass > 1 && resp[0] != NULL) retval = pam_prompt (pamh, PAM_PROMPT_ECHO_OFF, &resp[1], _("Retype %s"), prompt); } - else if (ask_twice) + else if (chpass) { retval = pam_prompt (pamh, PAM_PROMPT_ECHO_OFF, &resp[0], PROMPT1, authtok_type, strlen (authtok_type) > 0?" ":""); - if (retval == PAM_SUCCESS && ask_twice && resp[0] != NULL) + if (retval == PAM_SUCCESS && chpass > 1 && resp[0] != NULL) retval = pam_prompt (pamh, PAM_PROMPT_ECHO_OFF, &resp[1], PROMPT2, authtok_type, strlen (authtok_type) > 0?" ":""); @@ -146,14 +147,14 @@ pam_get_authtok_internal (pam_handle_t *pamh, int item, PROMPT); if (retval != PAM_SUCCESS || resp[0] == NULL || - (ask_twice && resp[1] == NULL)) + (chpass > 1 && resp[1] == NULL)) { /* We want to abort the password change */ pam_error (pamh, _("Password change aborted.")); return PAM_AUTHTOK_ERR; } - if (ask_twice && strcmp (resp[0], resp[1]) != 0) + if (chpass > 1 && strcmp (resp[0], resp[1]) != 0) { pam_error (pamh, MISTYPED_PASS); _pam_overwrite (resp[0]); -- 2.40.0