From cfa4cebf13adc64bd9934e355c645e3e574bf570 Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" Date: Sat, 30 Aug 2014 16:24:53 -0600 Subject: [PATCH] Remove signal_event from evbase before calling sudo_ev_loopexit() when the command has exited or been killed. It is possible that we could receive another signal on the pipe if they are delivered out of order. --- src/exec.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/exec.c b/src/exec.c index 275ee7585..8f8e389aa 100644 --- a/src/exec.c +++ b/src/exec.c @@ -603,6 +603,7 @@ dispatch_signal(struct sudo_event_base *evbase, pid_t child, /* Child has exited or been killed, we are done. */ cstat->type = CMD_WSTATUS; cstat->val = status; + sudo_ev_del(evbase, signal_event); sudo_ev_loopexit(evbase); goto done; }