From 5a81de94f2db3c3b39212cfa9f07b94d3fef4f11 Mon Sep 17 00:00:00 2001
From: David Goulet <dgoulet@riseup.net>
Date: Fri, 17 Feb 2017 14:19:34 -0500
Subject: [PATCH] Handle error code in trees_ostream_send_header()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Properly handle the returned value of o_stream_send() so we make sure
the entire header was sent else error on that.

Reported-by: Tomasz Miąsko <tomasz.miasko@gmail.com>
Signed-off-by: David Goulet <dgoulet@riseup.net>
---
 src/trees-ostream.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/src/trees-ostream.c b/src/trees-ostream.c
index ac55ffc..961e90c 100644
--- a/src/trees-ostream.c
+++ b/src/trees-ostream.c
@@ -66,10 +66,17 @@ trees_ostream_send_header(struct trees_ostream *sstream)
   /* The header here consists of a magic number. */
   ssize_t ret = o_stream_send(sstream->ostream.parent, header,
                               sizeof(header));
+  if (ret != sizeof(header)) {
+    o_stream_copy_error_from_parent(&sstream->ostream);
+    goto err;
+  }
+
 #ifdef DEBUG_STREAMS
-  sstream->out_byte_count += sizeof(header);
+  sstream->out_byte_count += ret;
 #endif
   return ret;
+err:
+  return -1;
 }
 
 static ssize_t
-- 
GitLab