Cannot wrap sigsetjmp() or we end up returning to the wrong place.

Use a macro instead.
This commit is contained in:
Todd C. Miller
2012-11-29 06:37:13 -05:00
parent 02ad501ecc
commit b7ae7977a6
7 changed files with 36 additions and 41 deletions

View File

@@ -465,10 +465,10 @@ sudoers_policy_open(unsigned int version, sudo_conv_t conversation,
if (sudo_version < SUDO_API_MKVERSION(1, 2))
args = NULL;
if (plugin_setjmp() != 0) {
if (error_setjmp() != 0) {
/* called via error(), errorx() or log_fatal() */
rewind_perms();
plugin_clearjmp();
error_disable_setjmp();
debug_return_bool(-1);
}
@@ -484,9 +484,9 @@ sudoers_policy_close(int exit_status, int error_code)
{
debug_decl(sudoers_policy_close, SUDO_DEBUG_PLUGIN)
if (plugin_setjmp() != 0) {
if (error_setjmp() != 0) {
/* called via error(), errorx() or log_fatal() */
plugin_clearjmp();
error_disable_setjmp();
debug_return;
}
@@ -534,9 +534,9 @@ sudoers_policy_init_session(struct passwd *pwd, char **user_env[])
if (sudo_version < SUDO_API_MKVERSION(1, 2))
user_env = NULL;
if (plugin_setjmp() != 0) {
if (error_setjmp() != 0) {
/* called via error(), errorx() or log_fatal() */
plugin_clearjmp();
error_disable_setjmp();
debug_return_bool(-1);
}
@@ -577,11 +577,11 @@ sudoers_policy_invalidate(int remove)
debug_decl(sudoers_policy_invalidate, SUDO_DEBUG_PLUGIN)
user_cmnd = "kill";
if (plugin_setjmp() == 0) {
if (error_setjmp() == 0) {
remove_timestamp(remove);
sudoers_cleanup();
}
plugin_clearjmp();
error_disable_setjmp();
debug_return;
}
@@ -621,9 +621,9 @@ sudoers_policy_version(int verbose)
{
debug_decl(sudoers_policy_version, SUDO_DEBUG_PLUGIN)
if (plugin_setjmp() != 0) {
if (error_setjmp() != 0) {
/* error recovery via error(), errorx() or log_fatal() */
plugin_clearjmp();
error_disable_setjmp();
debug_return_bool(-1);
}