Plug a memory leak in the PAM child process. It is of no great consequence

as the process is short-lived, and the leak occurs very rarely and always
shortly before the process terminates.

MFC after:	3 days
This commit is contained in:
Dag-Erling Smørgrav 2003-10-23 08:27:16 +00:00
parent 4318dce616
commit 522a040d24
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=121420

View File

@ -132,6 +132,7 @@ pam_thread_conv(int n,
if (n <= 0 || n > PAM_MAX_NUM_MSG)
return (PAM_CONV_ERR);
*resp = xmalloc(n * sizeof **resp);
memset(*resp, 0, n * sizeof **resp);
buffer_init(&buffer);
for (i = 0; i < n; ++i) {
(*resp)[i].resp_retcode = 0;
@ -169,6 +170,13 @@ pam_thread_conv(int n,
buffer_free(&buffer);
return (PAM_SUCCESS);
fail:
for (i = 0; i < n; ++i) {
if ((*resp)[i].resp != NULL) {
memset((*resp)[i].resp, 0, strlen((*resp)[i].resp));
xfree((*resp)[i].resp);
}
}
memset(*resp, 0, n * sizeof **resp);
xfree(*resp);
*resp = NULL;
buffer_free(&buffer);