Reset signal mask at sudo startup time; we need to be able to rely on
normal signal delivery to control the child process.
This commit is contained in:
@@ -111,6 +111,7 @@ main(int argc, char *argv[], char *envp[])
|
|||||||
char **user_info, **command_info, **argv_out, **user_env_out;
|
char **user_info, **command_info, **argv_out, **user_env_out;
|
||||||
struct plugin_container *plugin, *next;
|
struct plugin_container *plugin, *next;
|
||||||
struct command_details command_details;
|
struct command_details command_details;
|
||||||
|
sigset_t mask;
|
||||||
int ok;
|
int ok;
|
||||||
#if defined(SUDO_DEVEL) && defined(__OpenBSD__)
|
#if defined(SUDO_DEVEL) && defined(__OpenBSD__)
|
||||||
extern char *malloc_options;
|
extern char *malloc_options;
|
||||||
@@ -129,7 +130,9 @@ main(int argc, char *argv[], char *envp[])
|
|||||||
if (geteuid() != 0)
|
if (geteuid() != 0)
|
||||||
errorx(1, "must be setuid root");
|
errorx(1, "must be setuid root");
|
||||||
|
|
||||||
/* Turn off core dumps and make sure fds 0-2 are open. */
|
/* Reset signal mask, disable core dumps and make sure fds 0-2 are open. */
|
||||||
|
(void) sigfillset(&mask);
|
||||||
|
(void) sigprocmask(SIG_UNBLOCK, &mask, NULL);
|
||||||
disable_coredumps();
|
disable_coredumps();
|
||||||
fix_fds();
|
fix_fds();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user