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

index f424888ecfccbda337c5ab1c37188352e1cfc05d..d4314c021ea59b8dd3889c0e7a7aff464b640f9e 100644 (file)
@@ -75,7 +75,7 @@ LiveDevStorageId LiveDevStorageRegister(const char *name, const unsigned int siz
 
 int LiveDevSetStorageById(LiveDevice *d, LiveDevStorageId id, void *ptr)
 {
-    return StorageSetById((Storage *)((void *)d + sizeof(LiveDevice)), STORAGE_DEVICE, id.id, ptr);
+    return StorageSetById(d->storage, STORAGE_DEVICE, id.id, ptr);
 }
 
 /**
@@ -88,7 +88,7 @@ int LiveDevSetStorageById(LiveDevice *d, LiveDevStorageId id, void *ptr)
 
 void *LiveDevGetStorageById(LiveDevice *d, LiveDevStorageId id)
 {
-    return StorageGetById((Storage *)((void *)d + sizeof(LiveDevice)), STORAGE_DEVICE, id.id);
+    return StorageGetById(d->storage, STORAGE_DEVICE, id.id);
 }
 
 /**
@@ -99,19 +99,18 @@ void *LiveDevGetStorageById(LiveDevice *d, LiveDevStorageId id)
 
 void *LiveDevAllocStorageById(LiveDevice *d, LiveDevStorageId id)
 {
-    return StorageAllocByIdPrealloc(
-            (Storage *)((void *)d + sizeof(LiveDevice)), STORAGE_DEVICE, id.id);
+    return StorageAllocByIdPrealloc(d->storage, STORAGE_DEVICE, id.id);
 }
 
 void LiveDevFreeStorageById(LiveDevice *d, LiveDevStorageId id)
 {
-    StorageFreeById((Storage *)((void *)d + sizeof(LiveDevice)), STORAGE_DEVICE, id.id);
+    StorageFreeById(d->storage, STORAGE_DEVICE, id.id);
 }
 
 void LiveDevFreeStorage(LiveDevice *d)
 {
     if (LiveDevStorageSize() > 0)
-        StorageFreeAll((Storage *)((void *)d + sizeof(LiveDevice)), STORAGE_DEVICE);
+        StorageFreeAll(d->storage, STORAGE_DEVICE);
 }
 
 
index 0f756b78ca3a153220d1f6374130007a707aa33c..d5a2d46caf081d6b3aed8438720fd37f14f74dfe 100644 (file)
@@ -23,6 +23,7 @@
 #endif /* HAVE_DPDK */
 
 #include "queue.h"
+#include "util-storage.h"
 
 #define OFFLOAD_FLAG_SG     (1<<0)
 #define OFFLOAD_FLAG_TSO    (1<<1)
@@ -66,6 +67,8 @@ typedef struct LiveDevice_ {
     // DPDK resources that needs to be cleaned after workers are stopped and devices closed
     DPDKDeviceResources dpdk_vars;
 #endif
+    /** storage handle as a flex array member */
+    Storage storage[];
 } LiveDevice;
 
 typedef struct LiveDeviceName_ {