From: Todd C. Miller Date: Wed, 4 May 2016 18:48:17 +0000 (-0600) Subject: Handle read() returning -1 when creating temporary files. X-Git-Tag: SUDO_1_8_17^2~123 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6ea903623b9960a6bbe8476f52f8cb71dd720cd4;p=sudo Handle read() returning -1 when creating temporary files. Coverity CID 104100 --- diff --git a/src/sudo_edit.c b/src/sudo_edit.c index e8da7e11b..0bae66ffc 100644 --- a/src/sudo_edit.c +++ b/src/sudo_edit.c @@ -559,17 +559,22 @@ sudo_edit_create_tfiles(struct command_details *command_details, debug_return_int(-1); } if (ofd != -1) { - while ((nread = read(ofd, buf, sizeof(buf))) != 0) { + while ((nread = read(ofd, buf, sizeof(buf))) > 0) { if ((nwritten = write(tfd, buf, nread)) != nread) { if (nwritten == -1) sudo_warn("%s", tf[j].tfile); else sudo_warnx(U_("%s: short write"), tf[j].tfile); - close(ofd); - close(tfd); - debug_return_int(-1); + break; } } + if (nread != 0) { + if (nread < 0) + sudo_warn("%s", files[i]); + close(ofd); + close(tfd); + debug_return_int(-1); + } close(ofd); } /*