[flashrom] [commit] r1803 - trunk

repository service svn at flashrom.org
Wed May 28 00:10:15 CEST 2014


Author: stefanct
Date: Wed May 28 00:10:15 2014
New Revision: 1803
URL: http://flashrom.org/trac/flashrom/changeset/1803

Log:
CID1129998/1129999: Unchecked return value from library.

Check return values of various fcntl() invocations in
serialport_config(), serialport_read_nonblock() and
serialport_write_nonblock().

Also, remove some superfluous print conversion specifiers and refine
messages.

Signed-off-by: Stefan Reinauer <stefan.reinauer at coreboot.org>
Acked-by: Stefan Tauner <stefan.tauner at alumni.tuwien.ac.at>

Modified:
   trunk/serial.c

Modified: trunk/serial.c
==============================================================================
--- trunk/serial.c	Tue May 27 23:27:27 2014	(r1802)
+++ trunk/serial.c	Wed May 28 00:10:15 2014	(r1803)
@@ -181,7 +181,10 @@
 	msg_pdbg("Baud rate is %ld.\n", dcb.BaudRate);
 #else
 	struct termios wanted, observed;
-	fcntl(fd, F_SETFL, 0);
+	if (fcntl(fd, F_SETFL, 0) != 0) {
+		msg_perr_strerror("Could not clear serial port mode: ");
+		return 1;
+	}
 	if (tcgetattr(fd, &observed) != 0) {
 		msg_perr_strerror("Could not fetch original serial port configuration: ");
 		return 1;
@@ -419,14 +422,21 @@
 		return -1;
 	}
 	if(!SetCommTimeouts(sp_fd, &newTimeout)) {
+		msg_perr_strerror("Could not set serial port timeout settings: ");
+		return -1;
+	}
 #else
 	ssize_t rv;
 	const int flags = fcntl(sp_fd, F_GETFL);
+	if (flags == -1) {
+		msg_perr_strerror("Could not get serial port mode: ");
+		return -1;
+	}
 	if (fcntl(sp_fd, F_SETFL, flags | O_NONBLOCK) != 0) {
-#endif
-		msg_perr_strerror("Could not set serial port timeout settings %s");
+		msg_perr_strerror("Could not set serial port mode to non-blocking: ");
 		return -1;
 	}
+#endif
 
 	int i;
 	int rd_bytes = 0;
@@ -458,12 +468,15 @@
 	/* restore original blocking behavior */
 #ifdef _WIN32
 	if (!SetCommTimeouts(sp_fd, &oldTimeout)) {
+		msg_perr_strerror("Could not restore serial port timeout settings: ");
+		ret = -1;
+	}
 #else
 	if (fcntl(sp_fd, F_SETFL, flags) != 0) {
-#endif
-		msg_perr_strerror("Could not restore serial port timeout settings: %s\n");
+		msg_perr_strerror("Could not restore serial port mode to blocking: ");
 		ret = -1;
 	}
+#endif
 	return ret;
 }
 
@@ -495,7 +508,14 @@
 #else
 	ssize_t rv;
 	const int flags = fcntl(sp_fd, F_GETFL);
-	fcntl(sp_fd, F_SETFL, flags | O_NONBLOCK);
+	if (flags == -1) {
+		msg_perr_strerror("Could not get serial port mode: ");
+		return -1;
+	}
+	if (fcntl(sp_fd, F_SETFL, flags | O_NONBLOCK) != 0) {
+		msg_perr_strerror("Could not set serial port mode to non-blocking: ");
+		return -1;
+	}
 #endif
 
 	int i;
@@ -531,10 +551,13 @@
 #ifdef _WIN32
 	if (!SetCommTimeouts(sp_fd, &oldTimeout)) {
 		msg_perr_strerror("Could not restore serial port timeout settings: ");
+		return -1;
+	}
 #else
 	if (fcntl(sp_fd, F_SETFL, flags) != 0) {
-#endif
+		msg_perr_strerror("Could not restore serial port blocking behavior: ");
 		return -1;
 	}
+#endif
 	return ret;
 }




More information about the flashrom mailing list