From 445e6f2e9a4ce66182b0fa25a9f5e0fec575c842 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Tue, 7 Jul 2015 13:17:50 -0600 Subject: [PATCH] Check sudo_conf_read() return value and exit on fatal error (a warning was already printed by sudo_conf_read()). --- lib/util/regress/sudo_conf/conf_test.c | 7 ++++--- plugins/sudoers/sudoreplay.c | 3 ++- plugins/sudoers/testsudoers.c | 3 ++- plugins/sudoers/visudo.c | 3 ++- src/sesh.c | 3 ++- src/sudo.c | 3 ++- 6 files changed, 14 insertions(+), 8 deletions(-) diff --git a/lib/util/regress/sudo_conf/conf_test.c b/lib/util/regress/sudo_conf/conf_test.c index 4a03f3179..97995e256 100644 --- a/lib/util/regress/sudo_conf/conf_test.c +++ b/lib/util/regress/sudo_conf/conf_test.c @@ -51,12 +51,13 @@ main(int argc, char *argv[]) initprogname(argc > 0 ? argv[0] : "conf_test"); if (argc != 2) { fprintf(stderr, "usage: %s conf_file\n", getprogname()); - exit(1); + exit(EXIT_FAILURE); } - sudo_conf_read(argv[1], SUDO_CONF_ALL); + if (sudo_conf_read(argv[1], SUDO_CONF_ALL) == -1) + exit(EXIT_FAILURE); sudo_conf_dump(); - exit(0); + exit(EXIT_SUCCESS); } static void diff --git a/plugins/sudoers/sudoreplay.c b/plugins/sudoers/sudoreplay.c index 2aed0a104..5808d2b47 100644 --- a/plugins/sudoers/sudoreplay.c +++ b/plugins/sudoers/sudoreplay.c @@ -211,7 +211,8 @@ main(int argc, char *argv[]) sudo_fatal_callback_register(sudoreplay_cleanup); /* Read sudo.conf and initialize the debug subsystem. */ - sudo_conf_read(NULL, SUDO_CONF_DEBUG); + if (sudo_conf_read(NULL, SUDO_CONF_DEBUG) == -1) + exit(EXIT_FAILURE); sudo_debug_register(getprogname(), NULL, NULL, sudo_conf_debug_files(getprogname())); diff --git a/plugins/sudoers/testsudoers.c b/plugins/sudoers/testsudoers.c index 20124a0f0..13fade718 100644 --- a/plugins/sudoers/testsudoers.c +++ b/plugins/sudoers/testsudoers.c @@ -132,7 +132,8 @@ main(int argc, char *argv[]) textdomain("sudoers"); /* Initialize the debug subsystem. */ - sudo_conf_read(NULL, SUDO_CONF_DEBUG); + if (sudo_conf_read(NULL, SUDO_CONF_DEBUG) == -1) + exit(EXIT_FAILURE); sudoers_debug_register(getprogname(), sudo_conf_debug_files(getprogname())); dflag = 0; diff --git a/plugins/sudoers/visudo.c b/plugins/sudoers/visudo.c index a8ea9cf3f..8e630b379 100644 --- a/plugins/sudoers/visudo.c +++ b/plugins/sudoers/visudo.c @@ -163,7 +163,8 @@ main(int argc, char *argv[]) sudo_fatal_callback_register(visudo_cleanup); /* Read debug and plugin sections of sudo.conf. */ - sudo_conf_read(NULL, SUDO_CONF_DEBUG|SUDO_CONF_PLUGINS); + if (sudo_conf_read(NULL, SUDO_CONF_DEBUG|SUDO_CONF_PLUGINS) == -1) + exit(EXIT_FAILURE); /* Initialize the debug subsystem. */ sudoers_debug_register(getprogname(), sudo_conf_debug_files(getprogname())); diff --git a/src/sesh.c b/src/sesh.c index c76609332..89e8f7c26 100644 --- a/src/sesh.c +++ b/src/sesh.c @@ -77,7 +77,8 @@ main(int argc, char *argv[], char *envp[]) sudo_fatalx(U_("requires at least one argument")); /* Read sudo.conf and initialize the debug subsystem. */ - sudo_conf_read(NULL, SUDO_CONF_DEBUG); + if (sudo_conf_read(NULL, SUDO_CONF_DEBUG) == -1) + exit(EXIT_FAILURE); sudo_debug_register(getprogname(), NULL, NULL, sudo_conf_debug_files(getprogname())); diff --git a/src/sudo.c b/src/sudo.c index aac0cc0c7..9a80c2df2 100644 --- a/src/sudo.c +++ b/src/sudo.c @@ -161,7 +161,8 @@ main(int argc, char *argv[], char *envp[]) #endif /* HAVE_GETPRPWNAM && HAVE_SET_AUTH_PARAMETERS */ /* Initialize the debug subsystem. */ - sudo_conf_read(NULL, SUDO_CONF_DEBUG); + if (sudo_conf_read(NULL, SUDO_CONF_DEBUG) == -1) + exit(EXIT_FAILURE); sudo_debug_instance = sudo_debug_register(getprogname(), NULL, NULL, sudo_conf_debug_files(getprogname())); -- 2.40.0