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

Reply via email to