X-Git-Url: http://dolda2000.com/gitweb/?a=blobdiff_plain;f=daemon%2Fauth-pam.c;h=38aa7cf5a6c33cf8ca37733647d978b325f8dfa4;hb=0d476fbe3dc7e71d55f9bb7de7f3cd19f06fc2aa;hp=48dbcbddfdf6123b0cb19446c075624234b14741;hpb=d3372da97568d5e1f35fa19787c8ec8af93a0435;p=doldaconnect.git diff --git a/daemon/auth-pam.c b/daemon/auth-pam.c index 48dbcbd..38aa7cf 100644 --- a/daemon/auth-pam.c +++ b/daemon/auth-pam.c @@ -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; } } @@ -195,7 +197,7 @@ static void pamauththread(struct authhandle *auth) data->validctxt = 0; } -static int pamauth(struct authhandle *auth, char *passdata) +static int pamauth(struct authhandle *auth, struct socket *sk, char *passdata) { struct pamdata *data;