From: Jonathan McDowell <noodles@earth.li>
Date: Mon, 25 Apr 2011 01:33:13 +0000 (-0700)
Subject: Fix buffer_getchar to only error if we'd exceed the buffer size
X-Git-Url: https://git.sommitrealweird.co.uk/onak.git/commitdiff_plain/f93d57195dfa072ca6fea0c76428fde5337bcabc?hp=7f5cb141f9e9112773f4437987ce15666370873f

Fix buffer_getchar to only error if we'd exceed the buffer size

  We were erroring when we retrieved the end of the buffer, and not
  if we overflowed past the end. Check if we'd overflow and return
  an error only in that case.
---

diff --git a/charfuncs.c b/charfuncs.c
index fea0a99..8448aee 100644
--- a/charfuncs.c
+++ b/charfuncs.c
@@ -25,11 +25,15 @@ int buffer_fetchchar(void *ctx, size_t count, void *c)
 	struct buffer_ctx *buf = NULL;
 	
 	buf = (struct buffer_ctx *) ctx;
+
+	if (buf->offset + count > buf->size) {
+		return 1;
+	}
 	
 	memcpy(c, &buf->buffer[buf->offset], count);
 	buf->offset += count;
 
-	return (((buf->offset) == (buf->size)) ? 1 : 0);
+	return 0;
 }
 
 /**