changeset d7c7b6752e2c in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=d7c7b6752e2c
description:
Check the return value of I/O operations for failure
diffstat:
3 files changed, 5 insertions(+), 4 deletions(-)
src/base/loader/hex_file.cc | 2 +-
src/base/remote_gdb.cc | 3 ++-
src/dev/ethertap.cc | 4 ++--
diffs (54 lines):
diff -r 65b27e939646 -r d7c7b6752e2c src/base/loader/hex_file.cc
--- a/src/base/loader/hex_file.cc Fri Sep 19 09:11:40 2008 -0700
+++ b/src/base/loader/hex_file.cc Fri Sep 19 09:11:42 2008 -0700
@@ -65,7 +65,9 @@
Addr MemAddr;
uint32_t Data;
while (!feof(fp)) {
- fgets(Line, 64, fp);
+ char *ret = fgets(Line, sizeof(Line), fp);
+ if (!ret)
+ panic("malformed file");
parseLine(Line, &MemAddr, &Data);
if (MemAddr != 0) {
// Now, write to memory
diff -r 65b27e939646 -r d7c7b6752e2c src/base/remote_gdb.cc
--- a/src/base/remote_gdb.cc Fri Sep 19 09:11:40 2008 -0700
+++ b/src/base/remote_gdb.cc Fri Sep 19 09:11:42 2008 -0700
@@ -346,14 +346,16 @@
BaseRemoteGDB::getbyte()
{
uint8_t b;
- ::read(fd, &b, 1);
+ if (::read(fd, &b, 1) != 1)
+ warn("could not read byte from debugger");
return b;
}
void
BaseRemoteGDB::putbyte(uint8_t b)
{
- ::write(fd, &b, 1);
+ if (::write(fd, &b, 1) != 1)
+ warn("could not write byte to debugger");
}
// Send a packet to gdb
diff -r 65b27e939646 -r d7c7b6752e2c src/dev/ethertap.cc
--- a/src/dev/ethertap.cc Fri Sep 19 09:11:40 2008 -0700
+++ b/src/dev/ethertap.cc Fri Sep 19 09:11:42 2008 -0700
@@ -182,8 +182,12 @@
DPRINTF(Ethernet, "EtherTap output len=%d\n", packet->length);
DDUMP(EthernetData, packet->data, packet->length);
uint32_t len = htonl(packet->length);
- write(socket, &len, sizeof(len));
- write(socket, packet->data, packet->length);
+ ssize_t ret = write(socket, &len, sizeof(len));
+ if (ret != sizeof(len))
+ return false;
+ ret = write(socket, packet->data, packet->length);
+ if (ret != packet->length)
+ return false;
interface->recvDone();
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev