diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2019-06-07 09:14:41 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2019-06-07 09:14:41 +0200 |
commit | ed042010dc8f6e2a5e1f06db1123b7472bfbf377 (patch) | |
tree | 5f45aab9c90babe8169046edaecc071ff5a8164c /printutils | |
parent | 45e3967c20b5020bf720b9497592e231104398f3 (diff) | |
download | 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>
Diffstat (limited to 'printutils')
-rw-r--r-- | printutils/lpd.c | 6 |
1 files 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]); |