Skip to content

Commit f741cb0

Browse files
committed
Move sentel code from cfrds_buffer_data() to cfrds_buffer_realloc_if_needed()
1 parent a5e1196 commit f741cb0

1 file changed

Lines changed: 4 additions & 14 deletions

File tree

src/cfrds_buffer.c

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -140,13 +140,14 @@ static bool cfrds_buffer_realloc_if_needed(cfrds_buffer_int *buffer, size_t len)
140140
size_t newsize = buffer_int->size + len;
141141
newsize = (((newsize + 512) / 1024) + 1) * 1024;
142142

143-
tmp = realloc(buffer_int->data, newsize);
143+
/* +1: always keep a null sentinel byte past the data */
144+
tmp = realloc(buffer_int->data, newsize + 1);
144145
if (tmp == NULL)
145146
return false;
146147

147148
size_t oldsize = buffer_int->allocated;
148149
buffer_int->data = tmp;
149-
explicit_bzero(buffer_int->data + oldsize, newsize - oldsize);
150+
explicit_bzero(buffer_int->data + oldsize, newsize + 1 - oldsize);
150151
buffer_int->allocated = newsize;
151152
}
152153

@@ -176,21 +177,10 @@ bool cfrds_buffer_create(cfrds_buffer **buffer)
176177

177178
char *cfrds_buffer_data(cfrds_buffer *buffer)
178179
{
179-
cfrds_buffer_int *ret = NULL;
180-
181180
if (buffer == NULL)
182181
return NULL;
183182

184-
ret = (cfrds_buffer_int *)buffer;
185-
186-
size_t size = ret->size;
187-
188-
if (cfrds_buffer_realloc_if_needed(ret, size + 1) == false)
189-
return NULL;
190-
191-
ret->data[size] = 0;
192-
193-
return (char *)ret->data;
183+
return (char *)((cfrds_buffer_int *)buffer)->data;
194184
}
195185

196186
size_t cfrds_buffer_data_size(cfrds_buffer *buffer)

0 commit comments

Comments
 (0)