a37d2c7046
- pam_unix: fix multiple error prompts on password change (#443872)
32 lines
1.4 KiB
Diff
32 lines
1.4 KiB
Diff
diff -up Linux-PAM-1.0.1/modules/pam_unix/pam_unix_passwd.c.prompts Linux-PAM-1.0.1/modules/pam_unix/pam_unix_passwd.c
|
|
--- Linux-PAM-1.0.1/modules/pam_unix/pam_unix_passwd.c.prompts 2008-02-29 16:22:03.000000000 +0100
|
|
+++ Linux-PAM-1.0.1/modules/pam_unix/pam_unix_passwd.c 2008-04-24 13:27:29.000000000 +0200
|
|
@@ -699,6 +699,10 @@ PAM_EXTERN int pam_sm_chauthtok(pam_hand
|
|
pass_new = NULL;
|
|
}
|
|
retval = _pam_unix_approve_pass(pamh, ctrl, pass_old, pass_new);
|
|
+
|
|
+ if (retval != PAM_SUCCESS && off(UNIX_NOT_SET_PASS, ctrl)) {
|
|
+ pam_set_item(pamh, PAM_AUTHTOK, NULL);
|
|
+ }
|
|
}
|
|
|
|
if (retval != PAM_SUCCESS) {
|
|
diff -up Linux-PAM-1.0.1/modules/pam_unix/support.c.prompts Linux-PAM-1.0.1/modules/pam_unix/support.c
|
|
--- Linux-PAM-1.0.1/modules/pam_unix/support.c.prompts 2008-01-23 16:35:13.000000000 +0100
|
|
+++ Linux-PAM-1.0.1/modules/pam_unix/support.c 2008-04-24 14:49:21.000000000 +0200
|
|
@@ -743,11 +743,11 @@ int _unix_read_password(pam_handle_t * p
|
|
return retval;
|
|
} else if (*pass != NULL) { /* we have a password! */
|
|
return PAM_SUCCESS;
|
|
- } else if (on(UNIX_USE_FIRST_PASS, ctrl)) {
|
|
- return PAM_AUTHTOK_RECOVERY_ERR; /* didn't work */
|
|
} else if (on(UNIX_USE_AUTHTOK, ctrl)
|
|
&& off(UNIX__OLD_PASSWD, ctrl)) {
|
|
return PAM_AUTHTOK_ERR;
|
|
+ } else if (on(UNIX_USE_FIRST_PASS, ctrl)) {
|
|
+ return PAM_AUTHTOK_RECOVERY_ERR; /* didn't work */
|
|
}
|
|
}
|
|
/*
|