SECURITY: fixed fix to buffer handling
authorSimon Tatham <anakin@pobox.com>
Mon, 22 Sep 2014 09:28:05 +0000 (10:28 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 22 Sep 2014 15:07:51 +0000 (16:07 +0100)
The implementation of buf_remaining_space in 92795040 was entirely
broken.  It failed to take buf->size into account at all !

Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
util.h

diff --git a/util.h b/util.h
index 29b68e7..5866e57 100644 (file)
--- a/util.h
+++ b/util.h
@@ -31,7 +31,7 @@ extern void *buf_unprepend(struct buffer_if *buf, int32_t amount);
 
 static inline int32_t buf_remaining_space(const struct buffer_if *buf)
 {
-    return (buf->base + buf->alloclen) - buf->start;
+    return (buf->base + buf->alloclen) - (buf->start + buf->size);
 }
 
 extern void buffer_readonly_view(struct buffer_if *n, const void*, int32_t len);