Revert change to initialize io_operations earlier.

Instead, check io_operations.open for NULL which is the case for
"sudo -V".  Also move the early return in sudoers_io_open() for
"sudo -V" until after we have initialized debugging.
This commit is contained in:
Todd C. Miller
2020-03-01 13:36:54 -07:00
parent f590f81b3c
commit bf2bc931ab

View File

@@ -656,13 +656,6 @@ sudoers_io_open(unsigned int version, sudo_conv_t conversation,
sudo_conv = conversation;
sudo_printf = plugin_printf;
/* Initialize io_operations. */
sudoers_io_setops();
/* If we have no command (because -V was specified) just return. */
if (argc == 0)
debug_return_int(true);
bindtextdomain("sudoers", LOCALEDIR);
/* Initialize the debug subsystem. */
@@ -684,6 +677,10 @@ sudoers_io_open(unsigned int version, sudo_conv_t conversation,
goto done;
}
/* If we have no command (because -V was specified) just return. */
if (argc == 0)
debug_return_int(true);
/*
* Pull iolog settings out of command_info.
*/
@@ -704,6 +701,9 @@ sudoers_io_open(unsigned int version, sudo_conv_t conversation,
}
}
/* Initialize io_operations. */
sudoers_io_setops();
if (sudo_gettime_awake(&last_time) == -1) {
sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_ERRNO,
"%s: unable to get time of day", __func__);
@@ -776,7 +776,8 @@ sudoers_io_close(int exit_status, int error)
const char *errstr = NULL;
debug_decl(sudoers_io_close, SUDOERS_DEBUG_PLUGIN);
io_operations.close(exit_status, error, &errstr);
if (io_operations.close != NULL)
io_operations.close(exit_status, error, &errstr);
sudo_freepwcache();
sudo_freegrcache();