Browse Source

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>
Denys Vlasenko 4 years ago
parent
commit
ed042010dc
1 changed files with 4 additions and 2 deletions
  1. 4 2
      printutils/lpd.c

+ 4 - 2
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]);