From: Dwight Engen Date: Mon, 15 Apr 2013 19:40:53 +0000 (-0400) Subject: fortify: check the value returned from write(2) X-Git-Tag: lxc-1.0.0.alpha1~1^2~297 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0a2188544a538b421612c90d44e56853a9d64458;p=thirdparty%2Flxc.git fortify: check the value returned from write(2) Also check that we wrote the amount we expected to. The write on the pty is blocking but we could still get a short write on EINTR, so we should SYSERROR it. Signed-off-by: Dwight Engen Acked-by: Serge E. Hallyn --- diff --git a/src/lxc/lxc_console.c b/src/lxc/lxc_console.c index 3dd2155c6..643c44276 100644 --- a/src/lxc/lxc_console.c +++ b/src/lxc/lxc_console.c @@ -165,14 +165,18 @@ static int master_handler(int fd, void *data, struct lxc_epoll_descr *descr) { char buf[1024]; int *peer = (int *)data; - int r; + int r,w; r = read(fd, buf, sizeof(buf)); if (r < 0) { SYSERROR("failed to read"); return 1; } - r = write(*peer, buf, r); + w = write(*peer, buf, r); + if (w < 0 || w != r) { + SYSERROR("failed to write"); + return 1; + } return 0; }