summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko2019-06-07 09:14:41 +0200
committerDenys Vlasenko2019-06-07 09:14:41 +0200
commited042010dc8f6e2a5e1f06db1123b7472bfbf377 (patch)
tree5f45aab9c90babe8169046edaecc071ff5a8164c
parent45e3967c20b5020bf720b9497592e231104398f3 (diff)
downloadbusybox-ed042010dc8f6e2a5e1f06db1123b7472bfbf377.zip
busybox-ed042010dc8f6e2a5e1f06db1123b7472bfbf377.tar.gz
lpd: avoid SEGVing on immediate EOF from peer
Patch by Luís Marques <luismarques@lowrisc.org> function old new delta lpd_main 749 757 +8 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--printutils/lpd.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/printutils/lpd.c b/printutils/lpd.c
index ce59440..e48feef 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]);