summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2001-07-06 22:55:01 +0000
committerJeremy Allison <jra@samba.org>2001-07-06 22:55:01 +0000
commit27f74bc1c9a686014cd9ea059cefdee1a24d7dc7 (patch)
tree844047e77d11a96c51a9066c40de51273cb6bc63
parent81c5a1d3b772058ce65c1c8c78cd58ae8491fde9 (diff)
downloadsamba-27f74bc1c9a686014cd9ea059cefdee1a24d7dc7.tar.gz
samba-27f74bc1c9a686014cd9ea059cefdee1a24d7dc7.tar.xz
samba-27f74bc1c9a686014cd9ea059cefdee1a24d7dc7.zip
Password changing via PAM works now. DONT CHANGE THIS UNLESS YOU RE-TEST !!!!!!
Jeremy.
-rw-r--r--source/auth/pampass.c21
-rw-r--r--source/passdb/pampass.c21
2 files changed, 38 insertions, 4 deletions
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));