]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
membuffer: use buffer pointer as flexible array member
authorVictor Julien <vjulien@oisf.net>
Fri, 24 Nov 2023 15:12:47 +0000 (16:12 +0100)
committerVictor Julien <victor@inliniac.net>
Tue, 24 Sep 2024 04:56:22 +0000 (06:56 +0200)
(cherry picked from commit 9c3669b03fc3903c30ced9088361e74fd4aec04f)

An additional change was made to correct an ASAN issue -- the membuffer
is reset following allocation in MemBufferCreateNew().

src/util-buffer.c
src/util-buffer.h

index 71a92f7b62471b0e90a0dd294b5c675eedf71c5f..5b52a05dc41eb728aa09e923afbab988b5c4295c 100644 (file)
@@ -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;
index a653ee0444836f731752c4d5bed4156511a046be..e58a790d7b26eb0eaa9f21ed4ef36a72ded92068 100644 (file)
@@ -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);