--- ../1/poppassd.c 2006-11-09 20:46:34.000000000 +0530 +++ poppassd.c 2006-11-09 21:17:07.000000000 +0530 @@ -123,11 +123,12 @@ void *appdata_ptr; { int i; - struct pam_response *r = malloc(sizeof(struct pam_response) * num_msg); + struct pam_response *r; if(num_msg <= 0) return(PAM_CONV_ERR); + r = malloc(sizeof(struct pam_response) * num_msg); if(r == NULL) return(PAM_CONV_ERR); @@ -137,9 +138,9 @@ syslog(LOG_ERR, "PAM error: %s", msg[i]->msg); /* * If there is an error, we don't want to be sending in - * anything more, so set pop_state to invalid + * anything more, so we quit after printing the error message. */ - pop_state = POP_SKIPASS; + exit(1); } r[i].resp_retcode = 0; @@ -228,7 +229,7 @@ pw=getpwnam(user); - if(pw->pw_uidpw_uid