Disable environment hooks after we get user_env back to make sure

a plugin can't to modify user_env after we "own" it.  This is kind
of a hack but we don't want the init_session plugin function to
modify user_env.
This commit is contained in:
Todd C. Miller
2012-03-08 11:30:21 -05:00
parent 9b58120c36
commit 20a7633a3f
3 changed files with 31 additions and 0 deletions

View File

@@ -278,3 +278,29 @@ deregister_hook(struct sudo_hook *hook)
debug_return_int(rval);
}
/* Deregister all environment handling hooks. */
void
deregister_env_hooks(void)
{
struct sudo_hook_list *tofree;
debug_decl(deregister_env_hooks, SUDO_DEBUG_HOOKS)
while ((tofree = sudo_hook_setenv_list) != NULL) {
sudo_hook_setenv_list = sudo_hook_setenv_list->next;
efree(tofree);
}
while ((tofree = sudo_hook_unsetenv_list) != NULL) {
sudo_hook_unsetenv_list = sudo_hook_unsetenv_list->next;
efree(tofree);
}
while ((tofree = sudo_hook_getenv_list) != NULL) {
sudo_hook_getenv_list = sudo_hook_getenv_list->next;
efree(tofree);
}
while ((tofree = sudo_hook_putenv_list) != NULL) {
sudo_hook_putenv_list = sudo_hook_putenv_list->next;
efree(tofree);
}
debug_return;
}