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.
This commit is contained in:
Todd C. Miller
2014-08-30 16:24:53 -06:00
parent 26e61adc50
commit cfa4cebf13

View File

@@ -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;
}