From: Jeremy Allison Date: Fri, 6 Jul 2001 22:54:49 +0000 (+0000) Subject: Password changing via PAM works now. DONT CHANGE THIS UNLESS YOU RE-TEST !!!!!! X-Git-Tag: samba-2.2.5pre1~1779^2~73 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=79574c07ed5de7194a17c9ee8d189370d8e42bcc;p=thirdparty%2Fsamba.git Password changing via PAM works now. DONT CHANGE THIS UNLESS YOU RE-TEST !!!!!! Jeremy. --- diff --git a/source/auth/pampass.c b/source/auth/pampass.c index 53d2a062fdd..fc8e4af47d8 100644 --- a/source/auth/pampass.c +++ b/source/auth/pampass.c @@ -226,7 +226,9 @@ static struct chat_struct *make_pw_chat(char *p) special_char_sub(prompt); fstrcpy(t->prompt, prompt); - + strlower(t->prompt); + trim_string(t->prompt, " ", " "); + if (!next_token(&p, reply, NULL, sizeof(fstring))) break; @@ -235,6 +237,8 @@ static struct chat_struct *make_pw_chat(char *p) special_char_sub(reply); fstrcpy(t->reply, reply); + strlower(t->reply); + trim_string(t->reply, " ", " "); } return list; @@ -298,11 +302,19 @@ static int smb_pam_passchange_conv(int num_msg, DEBUG(10,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_ON: PAM said: %s\n", msg[replies]->msg)); fstrcpy(current_prompt, msg[replies]->msg); strlower(current_prompt); + trim_string(current_prompt, " ", " "); for (t=pw_chat; t; t=t->next) { + + DEBUG(10,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_ON: trying to match |%s| to |%s|\n", + t->prompt, current_prompt )); + if (ms_fnmatch(t->prompt, current_prompt) == 0) { fstrcpy(current_reply, t->reply); - pwd_sub(current_reply, udp->PAM_username, udp->PAM_password, udp->PAM_newpassword); DEBUG(10,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_ON: We sent: %s\n", current_reply)); + pwd_sub(current_reply, udp->PAM_username, udp->PAM_password, udp->PAM_newpassword); +#ifdef DEBUG_PASSWORD + DEBUG(100,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_ON: We actualy sent: %s\n", current_reply)); +#endif reply[replies].resp_retcode = PAM_SUCCESS; reply[replies].resp = COPY_STRING(current_reply); found = True; @@ -323,7 +335,12 @@ static int smb_pam_passchange_conv(int num_msg, DEBUG(10,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_OFF: PAM said: %s\n", msg[replies]->msg)); fstrcpy(current_prompt, msg[replies]->msg); strlower(current_prompt); + trim_string(current_prompt, " ", " "); for (t=pw_chat; t; t=t->next) { + + DEBUG(10,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_OFF: trying to match |%s| to |%s|\n", + t->prompt, current_prompt )); + if (ms_fnmatch(t->prompt, current_prompt) == 0) { fstrcpy(current_reply, t->reply); DEBUG(10,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_OFF: We sent: %s\n", current_reply)); diff --git a/source/passdb/pampass.c b/source/passdb/pampass.c index 53d2a062fdd..fc8e4af47d8 100644 --- a/source/passdb/pampass.c +++ b/source/passdb/pampass.c @@ -226,7 +226,9 @@ static struct chat_struct *make_pw_chat(char *p) special_char_sub(prompt); fstrcpy(t->prompt, prompt); - + strlower(t->prompt); + trim_string(t->prompt, " ", " "); + if (!next_token(&p, reply, NULL, sizeof(fstring))) break; @@ -235,6 +237,8 @@ static struct chat_struct *make_pw_chat(char *p) special_char_sub(reply); fstrcpy(t->reply, reply); + strlower(t->reply); + trim_string(t->reply, " ", " "); } return list; @@ -298,11 +302,19 @@ static int smb_pam_passchange_conv(int num_msg, DEBUG(10,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_ON: PAM said: %s\n", msg[replies]->msg)); fstrcpy(current_prompt, msg[replies]->msg); strlower(current_prompt); + trim_string(current_prompt, " ", " "); for (t=pw_chat; t; t=t->next) { + + DEBUG(10,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_ON: trying to match |%s| to |%s|\n", + t->prompt, current_prompt )); + if (ms_fnmatch(t->prompt, current_prompt) == 0) { fstrcpy(current_reply, t->reply); - pwd_sub(current_reply, udp->PAM_username, udp->PAM_password, udp->PAM_newpassword); DEBUG(10,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_ON: We sent: %s\n", current_reply)); + pwd_sub(current_reply, udp->PAM_username, udp->PAM_password, udp->PAM_newpassword); +#ifdef DEBUG_PASSWORD + DEBUG(100,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_ON: We actualy sent: %s\n", current_reply)); +#endif reply[replies].resp_retcode = PAM_SUCCESS; reply[replies].resp = COPY_STRING(current_reply); found = True; @@ -323,7 +335,12 @@ static int smb_pam_passchange_conv(int num_msg, DEBUG(10,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_OFF: PAM said: %s\n", msg[replies]->msg)); fstrcpy(current_prompt, msg[replies]->msg); strlower(current_prompt); + trim_string(current_prompt, " ", " "); for (t=pw_chat; t; t=t->next) { + + DEBUG(10,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_OFF: trying to match |%s| to |%s|\n", + t->prompt, current_prompt )); + if (ms_fnmatch(t->prompt, current_prompt) == 0) { fstrcpy(current_reply, t->reply); DEBUG(10,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_OFF: We sent: %s\n", current_reply));