From f2708ab5e1f08a2aa2f525e50b577773e192f6cd Mon Sep 17 00:00:00 2001
From: Julien Chaffraix <julien.chaffraix@gmail.com>
Date: Fri, 10 Sep 2010 00:22:40 -0700
Subject: [PATCH 4/5] security.c: buffer_read various fixes.

Tighten the type of the |data| parameter to avoid a cast. Also made
it const as we should not modify it.

Added a DEBUGASSERT on the size to be written while changing it.
---
 lib/security.c |   10 ++++++----
 1 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/lib/security.c b/lib/security.c
index e9f8ea0..c79128a 100644
--- a/lib/security.c
+++ b/lib/security.c
@@ -180,11 +180,13 @@ static CURLcode read_data(struct connectdata *conn,
 }
 
 static size_t
-buffer_read(struct krb4buffer *buf, void *data, size_t len)
+buffer_read(struct krb4buffer *buf, const char *data, size_t len)
 {
-  if(buf->size - buf->index < len)
-    len = buf->size - buf->index;
-  memcpy(data, (char*)buf->data + buf->index, len);
+  size_t buf_capacity = buf->size - buf->index;
+  DEBUGASSERT(buf->size > buf->index);
+  if(buf_capacity < len)
+    len = buf_capacity;
+  memcpy(buf, data, len);
   buf->index += len;
   return len;
 }
-- 
1.7.0.4

