diff --git a/src/sudo.c b/src/sudo.c index 1dd0409cb..0af1433f8 100644 --- a/src/sudo.c +++ b/src/sudo.c @@ -316,9 +316,17 @@ main(int argc, char *argv[], char *envp[]) sudo_fatalx(U_("unexpected sudo mode 0x%x"), sudo_mode); } + /* + * If the command was terminated by a signal, sudo needs to terminated + * the same way. Otherwise, the shell may ignore a keyboard-generated + * signal. However, we want to avoid having sudo dump core itself. + */ if (WIFSIGNALED(status)) { sigaction_t sa; + if (WCOREDUMP(status)) + disable_coredumps(); + memset(&sa, 0, sizeof(sa)); sigemptyset(&sa.sa_mask); sa.sa_handler = SIG_DFL;