membuffer: use buffer pointer as flexible array member

(cherry picked from commit 9c3669b03f)

An additional change was made to correct an ASAN issue -- the membuffer
is reset following allocation in MemBufferCreateNew().
pull/11827/head
Victor Julien 3 years ago committed by Victor Julien
parent e1e3f5b1b8
commit 376c4b8a2b

@ -42,14 +42,12 @@ MemBuffer *MemBufferCreateNew(uint32_t size)
size_t total_size = size + sizeof(MemBuffer);
MemBuffer *buffer = SCMalloc(total_size);
MemBuffer *buffer = SCCalloc(1, total_size);
if (unlikely(buffer == NULL)) {
sc_errno = SC_ENOMEM;
return NULL;
}
buffer->size = size;
buffer->buffer = (uint8_t *)buffer + sizeof(MemBuffer);
return buffer;
}
@ -75,7 +73,6 @@ int MemBufferExpand(MemBuffer **buffer, uint32_t expand_by) {
}
*buffer = tbuffer;
(*buffer)->size += expand_by;
(*buffer)->buffer = (uint8_t *)tbuffer + sizeof(MemBuffer);
SCLogDebug("expanded buffer by %u, size is now %u", expand_by, (*buffer)->size);
return 0;

@ -25,9 +25,9 @@
#define __UTIL_BUFFER_H__
typedef struct MemBuffer_ {
uint8_t *buffer;
uint32_t size;
uint32_t offset;
uint32_t size;
uint32_t offset;
uint8_t buffer[];
} MemBuffer;
MemBuffer *MemBufferCreateNew(uint32_t size);

Loading…
Cancel
Save