Clear module data.

Clear environment.
Use pam_set_item() rather than free() to clear items so they get
properly clobbered.

Sponsored by:	DARPA, NAI Labs


git-svn-id: svn+ssh://svn.openpam.org/svn/openpam/trunk@18 185d5e19-27fe-0310-9dcf-9bff6b9f3609
This commit is contained in:
Dag-Erling Smørgrav 2002-02-02 17:58:58 +00:00
parent 298b19ac93
commit a980e1d3da
1 changed files with 17 additions and 2 deletions

View File

@ -50,14 +50,29 @@
int
pam_end(pam_handle_t *pamh,
int status __unused)
int status)
{
pam_chain_t *module;
pam_data_t *dp;
int i;
if (pamh == NULL)
return (PAM_SYSTEM_ERR);
/* clear module data */
while ((dp = pamh->module_data) != NULL) {
if (dp->cleanup)
(dp->cleanup)(pamh, dp->data, status);
pamh->module_data = dp->next;
free(dp->name);
free(dp);
}
/* clear environment */
while (pamh->env_count)
free(pamh->env[--pamh->env_count]);
free(pamh->env);
/* clear chains */
for (i = 0; i < PAM_NUM_CHAINS; ++i) {
while (pamh->chains[i] != NULL) {
@ -72,7 +87,7 @@ pam_end(pam_handle_t *pamh,
/* clear items */
for (i = 0; i < PAM_NUM_ITEMS; ++i)
free(pamh->item[i]);
pam_set_item(pamh, i, NULL);
free(pamh);