]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
Stop coredump on pam password change with pam_pwdb.so module on error.
authorJeremy Allison <jra@samba.org>
Tue, 1 May 2001 18:19:15 +0000 (18:19 +0000)
committerJeremy Allison <jra@samba.org>
Tue, 1 May 2001 18:19:15 +0000 (18:19 +0000)
Jeremy.

source/auth/pampass.c
source/passdb/pampass.c

index 061e5ee0bf1f6b5d74e7e76cf9ce6037226c24cb..68024f94810651bd951371d6b8a7c4dbbbb90656 100644 (file)
@@ -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;
index 061e5ee0bf1f6b5d74e7e76cf9ce6037226c24cb..68024f94810651bd951371d6b8a7c4dbbbb90656 100644 (file)
@@ -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;