mirror of
https://review.coreboot.org/flashrom.git
synced 2025-04-26 22:52:34 +02:00
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. Corresponding to flashrom svn r1803. Signed-off-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
This commit is contained in:
parent
12f3d51a8e
commit
0df844668f
47
serial.c
47
serial.c
@ -181,7 +181,10 @@ int serialport_config(fdtype fd, unsigned int baud)
|
||||
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 @@ int serialport_read_nonblock(unsigned char *c, unsigned int readcnt, unsigned in
|
||||
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 (fcntl(sp_fd, F_SETFL, flags | O_NONBLOCK) != 0) {
|
||||
#endif
|
||||
msg_perr_strerror("Could not set serial port timeout settings %s");
|
||||
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;
|
||||
int rd_bytes = 0;
|
||||
@ -458,12 +468,15 @@ int serialport_read_nonblock(unsigned char *c, unsigned int readcnt, unsigned in
|
||||
/* restore original blocking behavior */
|
||||
#ifdef _WIN32
|
||||
if (!SetCommTimeouts(sp_fd, &oldTimeout)) {
|
||||
#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 timeout settings: ");
|
||||
ret = -1;
|
||||
}
|
||||
#else
|
||||
if (fcntl(sp_fd, F_SETFL, flags) != 0) {
|
||||
msg_perr_strerror("Could not restore serial port mode to blocking: ");
|
||||
ret = -1;
|
||||
}
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -495,7 +508,14 @@ int serialport_write_nonblock(const unsigned char *buf, unsigned int writecnt, u
|
||||
#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 @@ int serialport_write_nonblock(const unsigned char *buf, unsigned int writecnt, u
|
||||
#ifdef _WIN32
|
||||
if (!SetCommTimeouts(sp_fd, &oldTimeout)) {
|
||||
msg_perr_strerror("Could not restore serial port timeout settings: ");
|
||||
#else
|
||||
if (fcntl(sp_fd, F_SETFL, flags) != 0) {
|
||||
#endif
|
||||
return -1;
|
||||
}
|
||||
#else
|
||||
if (fcntl(sp_fd, F_SETFL, flags) != 0) {
|
||||
msg_perr_strerror("Could not restore serial port blocking behavior: ");
|
||||
return -1;
|
||||
}
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user