More correct return on conv error.
authorfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Tue, 26 Dec 2006 13:36:21 +0000 (13:36 +0000)
committerfredrik <fredrik@959494ce-11ee-0310-bf91-de5d638817bd>
Tue, 26 Dec 2006 13:36:21 +0000 (13:36 +0000)
git-svn-id: svn+ssh://svn.dolda2000.com/srv/svn/repos/src/doldaconnect@789 959494ce-11ee-0310-bf91-de5d638817bd

daemon/auth-pam.c

index 48dbcbd..b11825a 100644 (file)
@@ -99,20 +99,22 @@ static int pamconv(int nmsg, const struct pam_message **msg, struct pam_response
        }
        if(data->converr)
        {
-           for(; i < nmsg; i++)
-           {
-               (*resp)[i].resp = sstrdup("");
-               (*resp)[i].resp_retcode = PAM_SUCCESS;
-           }
+           for(i--; i >= 0; i--)
+               free((*resp)[i].resp);
+           free(*resp);
+           *resp = NULL;
            return(PAM_CONV_ERR);
        }
+       (*resp)[i].resp_retcode = PAM_SUCCESS;
        switch(msg[i]->msg_style)
        {
        case PAM_PROMPT_ECHO_OFF:
        case PAM_PROMPT_ECHO_ON:
            (*resp)[i].resp = sstrdup((char *)data->passdata);
            memset((void *)data->passdata, 0, strlen((char *)data->passdata));
-           (*resp)[i].resp_retcode = PAM_SUCCESS;
+           break;
+       default:
+           (*resp)[i].resp = NULL;
            break;
        }
     }