summaryrefslogtreecommitdiffstats
path: root/lib/libpam
diff options
context:
space:
mode:
authordes <des@FreeBSD.org>2002-04-15 03:00:14 +0000
committerdes <des@FreeBSD.org>2002-04-15 03:00:14 +0000
commit887c2ed0092dca487349932b1a5f69ce9e435f59 (patch)
tree3ebc9c6d9e8fc8e6290e3e6545e0550c533d01ef /lib/libpam
parent7b3eec9c1b076a354a05012be290667388778cfd (diff)
downloadFreeBSD-src-887c2ed0092dca487349932b1a5f69ce9e435f59.zip
FreeBSD-src-887c2ed0092dca487349932b1a5f69ce9e435f59.tar.gz
Prompt for new password during update phase, not during preliminary phase.
Sponsored by: DARPA, NAI Labs
Diffstat (limited to 'lib/libpam')
-rw-r--r--lib/libpam/modules/pam_unix/pam_unix.c26
1 files changed, 10 insertions, 16 deletions
diff --git a/lib/libpam/modules/pam_unix/pam_unix.c b/lib/libpam/modules/pam_unix/pam_unix.c
index 5c1125c..c40fd3a 100644
--- a/lib/libpam/modules/pam_unix/pam_unix.c
+++ b/lib/libpam/modules/pam_unix/pam_unix.c
@@ -311,7 +311,7 @@ pam_sm_chauthtok(pam_handle_t *pamh, int flags,
if (flags & PAM_PRELIM_CHECK) {
- PAM_LOG("PRELIM round; checking user password");
+ PAM_LOG("PRELIM round");
if (pwd->pw_passwd[0] == '\0'
&& pam_test_option(&options, PAM_OPT_NULLOK, NULL)) {
@@ -333,6 +333,15 @@ pam_sm_chauthtok(pam_handle_t *pamh, int flags,
if ((old_pass[0] == '\0' && pwd->pw_passwd[0] != '\0') ||
strcmp(encrypted, pwd->pw_passwd) != 0)
return (PAM_PERM_DENIED);
+ }
+ else if (flags & PAM_UPDATE_AUTHTOK) {
+ PAM_LOG("UPDATE round");
+
+ retval = pam_get_authtok(pamh,
+ PAM_AUTHTOK, &old_pass, NULL);
+ if (retval != PAM_SUCCESS)
+ return (retval);
+ PAM_LOG("Got old password");
/* get new password */
for (;;) {
@@ -346,21 +355,6 @@ pam_sm_chauthtok(pam_handle_t *pamh, int flags,
if (retval != PAM_SUCCESS)
PAM_VERBOSE_ERROR("Unable to get new password");
return (retval);
- }
- else if (flags & PAM_UPDATE_AUTHTOK) {
- PAM_LOG("UPDATE round");
-
- retval = pam_get_item(pamh,
- PAM_OLDAUTHTOK, (const void **)&old_pass);
- if (retval != PAM_SUCCESS)
- return (retval);
- PAM_LOG("Got old password");
-
- retval = pam_get_item(pamh,
- PAM_AUTHTOK, (const void **)&new_pass);
- if (retval != PAM_SUCCESS)
- return (retval);
- PAM_LOG("Got new password");
pwd->pw_change = 0;
lc = login_getclass(NULL);
OpenPOWER on IntegriCloud