--- pam_skey-1.1.5-orig/pam_skey.c +++ pam_skey-1.1.5/pam_skey.c @@ -214,6 +214,7 @@ struct pam_conv *conv = NULL; struct pam_response *presponse = NULL; int i=0; + int status; /* Better safe than sorry */ *response = NULL; @@ -244,12 +245,13 @@ return PAM_SERVICE_ERR; } /* Convert into pam_response */ - if (conv->conv(i, (const struct pam_message **)pmessage, &presponse, - conv->appdata_ptr) - != PAM_SUCCESS) + status = conv->conv(i, (const struct pam_message **)pmessage, + &presponse, conv->appdata_ptr); + if (status != PAM_SUCCESS) { - _pam_delete(presponse->resp); - return PAM_SERVICE_ERR; + if (presponse != NULL) + _pam_delete(presponse->resp); + return status; } if (presponse != NULL)