From ed042010dc8f6e2a5e1f06db1123b7472bfbf377 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 7 Jun 2019 09:14:41 +0200 Subject: [PATCH] lpd: avoid SEGVing on immediate EOF from peer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Patch by Luís Marques function old new delta lpd_main 749 757 +8 Signed-off-by: Denys Vlasenko --- printutils/lpd.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/printutils/lpd.c b/printutils/lpd.c index ce5944026..e48feef90 100644 --- a/printutils/lpd.c +++ b/printutils/lpd.c @@ -133,6 +133,8 @@ int lpd_main(int argc UNUSED_PARAM, char *argv[]) // read command s = queue = xmalloc_read_stdin(); + if (!s) // eof? + return EXIT_FAILURE; // we understand only "receive job" command if (2 != *queue) { unsupported_cmd: @@ -204,7 +206,7 @@ int lpd_main(int argc UNUSED_PARAM, char *argv[]) } // validate input. - // we understand only "control file" or "data file" cmds + // we understand only "control file" or "data file" subcmds if (2 != s[0] && 3 != s[0]) goto unsupported_cmd; if (spooling & (1 << (s[0]-1))) { @@ -291,7 +293,7 @@ int lpd_main(int argc UNUSED_PARAM, char *argv[]) err_exit: // don't keep corrupted files if (spooling) { -#define i spooling + int i; for (i = 2; --i >= 0; ) if (filenames[i]) unlink(filenames[i]);