Cannot wrap sigsetjmp() or we end up returning to the wrong place.
Use a macro instead.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user