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:
parent
298b19ac93
commit
a980e1d3da
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue