diff options
author | Jeremy Allison <jra@samba.org> | 2001-05-01 18:19:15 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2001-05-01 18:19:15 +0000 |
commit | d9b960b4a5997e4cd09e3da9ea4754cbae1e29b3 (patch) | |
tree | 57c69546cd8046b87bdfbac7f0127ee37a7ec20c | |
parent | acc3e7a057ad7fb0c2fb1cafff0c623ec0524d04 (diff) | |
download | samba-d9b960b4a5997e4cd09e3da9ea4754cbae1e29b3.tar.gz samba-d9b960b4a5997e4cd09e3da9ea4754cbae1e29b3.tar.xz samba-d9b960b4a5997e4cd09e3da9ea4754cbae1e29b3.zip |
Stop coredump on pam password change with pam_pwdb.so module on error.
Jeremy.
-rw-r--r-- | source/auth/pampass.c | 6 | ||||
-rw-r--r-- | source/passdb/pampass.c | 6 |
2 files changed, 10 insertions, 2 deletions
diff --git a/source/auth/pampass.c b/source/auth/pampass.c index 061e5ee0bf1..68024f94810 100644 --- a/source/auth/pampass.c +++ b/source/auth/pampass.c @@ -188,6 +188,7 @@ static int smb_pam_passchange_conv(int num_msg, for (replies = 0; replies < num_msg; replies++) { switch (msg[replies]->msg_style) { case PAM_PROMPT_ECHO_ON: + DEBUG(10,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_ON: Replied: %s\n", msg[replies]->msg)); reply[replies].resp_retcode = PAM_SUCCESS; reply[replies].resp = COPY_STRING(udp->PAM_username); /* PAM frees resp */ @@ -195,7 +196,7 @@ static int smb_pam_passchange_conv(int num_msg, case PAM_PROMPT_ECHO_OFF: reply[replies].resp_retcode = PAM_SUCCESS; - DEBUG(10,("smb_pam_passchange_conv: PAM Replied: %s\n", msg[replies]->msg)); + DEBUG(10,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_OFF: Replied: %s\n", msg[replies]->msg)); if (strncmp(currentpw_prompt, msg[replies]->msg, strlen(currentpw_prompt)) == 0) { reply[replies].resp = COPY_STRING(udp->PAM_password); } else if (strncmp(newpw_prompt, msg[replies]->msg, strlen(newpw_prompt)) == 0) { @@ -206,6 +207,9 @@ static int smb_pam_passchange_conv(int num_msg, DEBUG(3,("smb_pam_passchange_conv: Could not find reply for PAM prompt: %s\n",msg[replies]->msg)); DEBUG(5,("smb_pam_passchange_conv: Prompts available:\n CurrentPW: \"%s\"\n NewPW: \"%s\"\n \ RepeatPW: \"%s\"\n",currentpw_prompt,newpw_prompt,repeatpw_prompt)); + free(reply); + reply = NULL; + return PAM_CONV_ERR; } /* PAM frees resp */ break; diff --git a/source/passdb/pampass.c b/source/passdb/pampass.c index 061e5ee0bf1..68024f94810 100644 --- a/source/passdb/pampass.c +++ b/source/passdb/pampass.c @@ -188,6 +188,7 @@ static int smb_pam_passchange_conv(int num_msg, for (replies = 0; replies < num_msg; replies++) { switch (msg[replies]->msg_style) { case PAM_PROMPT_ECHO_ON: + DEBUG(10,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_ON: Replied: %s\n", msg[replies]->msg)); reply[replies].resp_retcode = PAM_SUCCESS; reply[replies].resp = COPY_STRING(udp->PAM_username); /* PAM frees resp */ @@ -195,7 +196,7 @@ static int smb_pam_passchange_conv(int num_msg, case PAM_PROMPT_ECHO_OFF: reply[replies].resp_retcode = PAM_SUCCESS; - DEBUG(10,("smb_pam_passchange_conv: PAM Replied: %s\n", msg[replies]->msg)); + DEBUG(10,("smb_pam_passchange_conv: PAM_PROMPT_ECHO_OFF: Replied: %s\n", msg[replies]->msg)); if (strncmp(currentpw_prompt, msg[replies]->msg, strlen(currentpw_prompt)) == 0) { reply[replies].resp = COPY_STRING(udp->PAM_password); } else if (strncmp(newpw_prompt, msg[replies]->msg, strlen(newpw_prompt)) == 0) { @@ -206,6 +207,9 @@ static int smb_pam_passchange_conv(int num_msg, DEBUG(3,("smb_pam_passchange_conv: Could not find reply for PAM prompt: %s\n",msg[replies]->msg)); DEBUG(5,("smb_pam_passchange_conv: Prompts available:\n CurrentPW: \"%s\"\n NewPW: \"%s\"\n \ RepeatPW: \"%s\"\n",currentpw_prompt,newpw_prompt,repeatpw_prompt)); + free(reply); + reply = NULL; + return PAM_CONV_ERR; } /* PAM frees resp */ break; |