summaryrefslogtreecommitdiffstats
path: root/extra/source/pam/patches/pam-1.1.3-pwhistory-incomplete.patch
diff options
context:
space:
mode:
Diffstat (limited to 'extra/source/pam/patches/pam-1.1.3-pwhistory-incomplete.patch')
-rw-r--r--extra/source/pam/patches/pam-1.1.3-pwhistory-incomplete.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/extra/source/pam/patches/pam-1.1.3-pwhistory-incomplete.patch b/extra/source/pam/patches/pam-1.1.3-pwhistory-incomplete.patch
new file mode 100644
index 000000000..6117b26ea
--- /dev/null
+++ b/extra/source/pam/patches/pam-1.1.3-pwhistory-incomplete.patch
@@ -0,0 +1,54 @@
+diff -up Linux-PAM-1.1.3/modules/pam_pwhistory/pam_pwhistory.c.incomplete Linux-PAM-1.1.3/modules/pam_pwhistory/pam_pwhistory.c
+--- Linux-PAM-1.1.3/modules/pam_pwhistory/pam_pwhistory.c.incomplete 2008-12-18 14:09:36.000000000 +0100
++++ Linux-PAM-1.1.3/modules/pam_pwhistory/pam_pwhistory.c 2010-11-11 14:45:02.000000000 +0100
+@@ -187,12 +187,13 @@ pam_sm_chauthtok (pam_handle_t *pamh, in
+ {
+ retval = pam_get_authtok (pamh, PAM_AUTHTOK, &newpass, NULL);
+ if (retval != PAM_SUCCESS && retval != PAM_TRY_AGAIN)
+- return retval;
++ {
++ if (retval == PAM_CONV_AGAIN)
++ retval = PAM_INCOMPLETE;
++ return retval;
++ }
+ tries++;
+
+- if (newpass == NULL || retval == PAM_TRY_AGAIN)
+- continue;
+-
+ if (options.debug)
+ {
+ if (newpass)
+@@ -201,12 +202,8 @@ pam_sm_chauthtok (pam_handle_t *pamh, in
+ pam_syslog (pamh, LOG_DEBUG, "got no auth token");
+ }
+
+- if (retval != PAM_SUCCESS || newpass == NULL)
+- {
+- if (retval == PAM_CONV_AGAIN)
+- retval = PAM_INCOMPLETE;
+- return retval;
+- }
++ if (newpass == NULL || retval == PAM_TRY_AGAIN)
++ continue;
+
+ if (options.debug)
+ pam_syslog (pamh, LOG_DEBUG, "check against old password file");
+@@ -219,7 +216,6 @@ pam_sm_chauthtok (pam_handle_t *pamh, in
+ newpass = NULL;
+ /* Remove password item, else following module will use it */
+ pam_set_item (pamh, PAM_AUTHTOK, (void *) NULL);
+- continue;
+ }
+ }
+
+@@ -230,8 +226,7 @@ pam_sm_chauthtok (pam_handle_t *pamh, in
+ return PAM_MAXTRIES;
+ }
+
+- /* Remember new password */
+- return pam_set_item (pamh, PAM_AUTHTOK, newpass);
++ return PAM_SUCCESS;
+ }
+
+