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
|
int
|
||||||
pam_end(pam_handle_t *pamh,
|
pam_end(pam_handle_t *pamh,
|
||||||
int status __unused)
|
int status)
|
||||||
{
|
{
|
||||||
pam_chain_t *module;
|
pam_chain_t *module;
|
||||||
|
pam_data_t *dp;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (pamh == NULL)
|
if (pamh == NULL)
|
||||||
return (PAM_SYSTEM_ERR);
|
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 */
|
/* clear chains */
|
||||||
for (i = 0; i < PAM_NUM_CHAINS; ++i) {
|
for (i = 0; i < PAM_NUM_CHAINS; ++i) {
|
||||||
while (pamh->chains[i] != NULL) {
|
while (pamh->chains[i] != NULL) {
|
||||||
|
@ -72,7 +87,7 @@ pam_end(pam_handle_t *pamh,
|
||||||
|
|
||||||
/* clear items */
|
/* clear items */
|
||||||
for (i = 0; i < PAM_NUM_ITEMS; ++i)
|
for (i = 0; i < PAM_NUM_ITEMS; ++i)
|
||||||
free(pamh->item[i]);
|
pam_set_item(pamh, i, NULL);
|
||||||
|
|
||||||
free(pamh);
|
free(pamh);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue