From: Todd C. Miller Date: Tue, 14 Jan 2014 17:54:56 +0000 (-0700) Subject: If not logging I/O we may get EOF when the command is executed and X-Git-Tag: SUDO_1_8_9p4~5 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4248b0366cf9dcebda5d814375425dc09883093e;p=sudo If not logging I/O we may get EOF when the command is executed and the other end of the backchannel is closed. Just remove the backchannel event in this case or we will continue to receive the event. Bug #631 --HG-- branch : 1.8 --- diff --git a/src/exec.c b/src/exec.c index 705573e19..744ee615b 100644 --- a/src/exec.c +++ b/src/exec.c @@ -230,11 +230,14 @@ backchannel_cb(int fd, int what, void *v) /* Short read or EOF. */ sudo_debug_printf(SUDO_DEBUG_ERROR, "failed to read child status: %s", n ? "short read" : "EOF"); - /* - * If not logging I/O we may get EOF when the command is - * executed and sv is closed. It is safe to ignore this. - */ - if (ec->log_io || n != 0) { + if (!ec->log_io && n == 0) { + /* + * If not logging I/O we may get EOF when the command is + * executed and the other end of the backchannel is closed. + * Just remove the event in this case. + */ + (void)sudo_ev_del(ec->evbase, backchannel_event); + } else { /* XXX - need new CMD_ type for monitor errors. */ errno = n ? EIO : ECONNRESET; ec->cstat->type = CMD_ERRNO;