]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
flow/storage: use flex array instead of calculated ptr
authorVictor Julien <vjulien@oisf.net>
Fri, 24 Nov 2023 18:28:37 +0000 (19:28 +0100)
committerVictor Julien <victor@inliniac.net>
Fri, 1 Dec 2023 13:55:37 +0000 (14:55 +0100)
src/flow-storage.c
src/flow.h

index 1ce9c07948d626a8ac06f5df69c338abb4941861..53b67ba6304809b93596a783deab59af62a96375 100644 (file)
@@ -39,28 +39,28 @@ unsigned int FlowStorageSize(void)
 
 void *FlowGetStorageById(const Flow *f, FlowStorageId id)
 {
-    return StorageGetById((Storage *)((void *)f + sizeof(Flow)), STORAGE_FLOW, id.id);
+    return StorageGetById(f->storage, STORAGE_FLOW, id.id);
 }
 
 int FlowSetStorageById(Flow *f, FlowStorageId id, void *ptr)
 {
-    return StorageSetById((Storage *)((void *)f + sizeof(Flow)), STORAGE_FLOW, id.id, ptr);
+    return StorageSetById(f->storage, STORAGE_FLOW, id.id, ptr);
 }
 
 void *FlowAllocStorageById(Flow *f, FlowStorageId id)
 {
-    return StorageAllocByIdPrealloc((Storage *)((void *)f + sizeof(Flow)), STORAGE_FLOW, id.id);
+    return StorageAllocByIdPrealloc(f->storage, STORAGE_FLOW, id.id);
 }
 
 void FlowFreeStorageById(Flow *f, FlowStorageId id)
 {
-    StorageFreeById((Storage *)((void *)f + sizeof(Flow)), STORAGE_FLOW, id.id);
+    StorageFreeById(f->storage, STORAGE_FLOW, id.id);
 }
 
 void FlowFreeStorage(Flow *f)
 {
     if (FlowStorageSize() > 0)
-        StorageFreeAll((Storage *)((void *)f + sizeof(Flow)), STORAGE_FLOW);
+        StorageFreeAll(f->storage, STORAGE_FLOW);
 }
 
 FlowStorageId FlowStorageRegister(const char *name, const unsigned int size,
index 0a730e0ea3b8d59254d543a36dadb695203a4626..c7b5867ea896357f8fb1adf6a2350dddfe69617f 100644 (file)
@@ -325,6 +325,8 @@ typedef unsigned short FlowStateType;
 /** Local Thread ID */
 typedef uint16_t FlowThreadId;
 
+#include "util-storage.h"
+
 /**
  *  \brief Flow data structure.
  *
@@ -489,6 +491,8 @@ typedef struct Flow_
     uint32_t tosrcpktcnt;
     uint64_t todstbytecnt;
     uint64_t tosrcbytecnt;
+
+    Storage storage[];
 } Flow;
 
 enum FlowState {