compat/pm_pam_conv.c
static void
free_resp(int num_msg, struct pam_response *pr)
{
	int i;
	struct pam_response *r = pr;

	if (pr == NULL)
		return;

	for (i = 0; i < num_msg; i++, r++) {

		if (r->resp) {
			/* clear before freeing -- may be a password */
			bzero(r->resp, strlen(r->resp));
			free(r->resp);
			r->resp = NULL;
		}
	}
	free(pr);
}
/*
 * Service modules don't clean up responses if an error is returned.
 * Free responses here.
 */
Service modules don't clean up responses if an error is returned.
Free responses here.
Service modules don ' t clean up responses if an error is returned . Free responses here .
static void
free_resp(int num_msg, struct pam_response *pr)
{
	int i;
	struct pam_response *r = pr;
	if (pr == NULL)
		return;
	for (i = 0; i < num_msg; i++, r++) {
		if (r->resp) {
			bzero(r->resp, strlen(r->resp));
			free(r->resp);
			r->resp = NULL;
		}
	}
	free(pr);
}
static void free_resp ( int num_msg , struct pam_response * pr ) { int i ; struct pam_response * r = pr ; if ( pr == NULL ) return ; for ( i = 0 ; i < num_msg ; i ++ , r ++ ) { if ( r -> resp ) { bzero ( r -> resp , strlen ( r -> resp ) ) ; free ( r -> resp ) ; r -> resp = NULL ; } } free ( pr ) ; }
Service modules don't clean up responses if an error is returned.
Service modules don ' t clean up responses if an error is returned .
/* clear before freeing -- may be a password */