rbuffer: Use xcalloc to ensure memory is initialized

Since the rbuffer contents are used by string functions (like sscan,
strlen, etc.), it is not safe to use uninitialized memory.  Using
xcalloc ensures the string-based functions do not run past the end of
the buffer.

Closes #5676
This commit is contained in:
James McCoy
2016-11-28 19:30:38 -05:00
parent 39bb43c530
commit 80b808dbfe

View File

@@ -18,7 +18,7 @@ RBuffer *rbuffer_new(size_t capacity)
capacity = 0x10000; capacity = 0x10000;
} }
RBuffer *rv = xmalloc(sizeof(RBuffer) + capacity); RBuffer *rv = xcalloc(1, sizeof(RBuffer) + capacity);
rv->full_cb = rv->nonfull_cb = NULL; rv->full_cb = rv->nonfull_cb = NULL;
rv->data = NULL; rv->data = NULL;
rv->size = 0; rv->size = 0;
@@ -78,7 +78,7 @@ void rbuffer_reset(RBuffer *buf) FUNC_ATTR_NONNULL_ALL
size_t temp_size; size_t temp_size;
if ((temp_size = rbuffer_size(buf))) { if ((temp_size = rbuffer_size(buf))) {
if (buf->temp == NULL) { if (buf->temp == NULL) {
buf->temp = xmalloc(rbuffer_capacity(buf)); buf->temp = xcalloc(1, rbuffer_capacity(buf));
} }
rbuffer_read(buf, buf->temp, buf->size); rbuffer_read(buf, buf->temp, buf->size);
} }