security.c: buffer_read various fixes.
authorJulien Chaffraix <julien.chaffraix@gmail.com>
Fri, 10 Sep 2010 07:22:40 +0000 (00:22 -0700)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 22 Sep 2010 21:34:36 +0000 (23:34 +0200)
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

index e9f8ea0..c79128a 100644 (file)
@@ -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;
 }