Carefully check return values from xwrite.
authorRichard Jones <rjones@redhat.com>
Sun, 26 Apr 2009 08:51:30 +0000 (09:51 +0100)
committerRichard Jones <rjones@redhat.com>
Sun, 26 Apr 2009 08:51:30 +0000 (09:51 +0100)
daemon/proto.c

index becf27c..ffb4a4e 100644 (file)
@@ -79,6 +79,7 @@ main_loop (int _sock)
 
     xread (sock, buf, len);
 
+#if 0
     if (verbose) {
       int i, j;
 
@@ -99,6 +100,7 @@ main_loop (int _sock)
        printf ("|\n");
       }
     }
+#endif
 
     /* Decode the message header. */
     xdrmem_create (&xdr, buf, len, XDR_DECODE);
@@ -209,8 +211,14 @@ send_error (const char *msg)
   xdr_uint32_t (&xdr, &len);
   xdr_destroy (&xdr);
 
-  (void) xwrite (sock, lenbuf, 4);
-  (void) xwrite (sock, buf, len);
+  if (xwrite (sock, lenbuf, 4) == -1) {
+    fprintf (stderr, "xwrite failed\n");
+    exit (1);
+  }
+  if (xwrite (sock, buf, len) == -1) {
+    fprintf (stderr, "xwrite failed\n");
+    exit (1);
+  }
 }
 
 void
@@ -250,8 +258,14 @@ reply (xdrproc_t xdrp, char *ret)
   xdr_uint32_t (&xdr, &len);
   xdr_destroy (&xdr);
 
-  (void) xwrite (sock, lenbuf, 4);
-  (void) xwrite (sock, buf, len);
+  if (xwrite (sock, lenbuf, 4) == -1) {
+    fprintf (stderr, "xwrite failed\n");
+    exit (1);
+  }
+  if (xwrite (sock, buf, len) == len) {
+    fprintf (stderr, "xwrite failed\n");
+    exit (1);
+  }
 }
 
 /* Receive file chunks, repeatedly calling 'cb'. */