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

index 0d1fd4af99d0242c96c4ddf2cd0035fdfc988297..a0e65c75df392df9537b2618825672ad8f64c3b5 100644 (file)
@@ -34,28 +34,28 @@ unsigned int IPPairStorageSize(void)
 
 void *IPPairGetStorageById(IPPair *h, IPPairStorageId id)
 {
-    return StorageGetById((Storage *)((void *)h + sizeof(IPPair)), STORAGE_IPPAIR, id.id);
+    return StorageGetById(h->storage, STORAGE_IPPAIR, id.id);
 }
 
 int IPPairSetStorageById(IPPair *h, IPPairStorageId id, void *ptr)
 {
-    return StorageSetById((Storage *)((void *)h + sizeof(IPPair)), STORAGE_IPPAIR, id.id, ptr);
+    return StorageSetById(h->storage, STORAGE_IPPAIR, id.id, ptr);
 }
 
 void *IPPairAllocStorageById(IPPair *h, IPPairStorageId id)
 {
-    return StorageAllocByIdPrealloc((Storage *)((void *)h + sizeof(IPPair)), STORAGE_IPPAIR, id.id);
+    return StorageAllocByIdPrealloc(h->storage, STORAGE_IPPAIR, id.id);
 }
 
 void IPPairFreeStorageById(IPPair *h, IPPairStorageId id)
 {
-    StorageFreeById((Storage *)((void *)h + sizeof(IPPair)), STORAGE_IPPAIR, id.id);
+    StorageFreeById(h->storage, STORAGE_IPPAIR, id.id);
 }
 
 void IPPairFreeStorage(IPPair *h)
 {
     if (IPPairStorageSize() > 0)
-        StorageFreeAll((Storage *)((void *)h + sizeof(IPPair)), STORAGE_IPPAIR);
+        StorageFreeAll(h->storage, STORAGE_IPPAIR);
 }
 
 IPPairStorageId IPPairStorageRegister(const char *name, const unsigned int size,
index 82f1c094af9a2b7eaca648c4367db741fa872f2c..3eef45ad8fccb85ffbaf9ddac4bd63e0e1ea9dd1 100644 (file)
@@ -65,9 +65,6 @@ typedef struct IPPair_ {
     /** use cnt, reference counter */
     SC_ATOMIC_DECLARE(unsigned int, use_cnt);
 
-    /** storage api handle */
-    Storage *storage;
-
     /** hash pointers, protected by hash row mutex/spin */
     struct IPPair_ *hnext;
     struct IPPair_ *hprev;
@@ -75,6 +72,9 @@ typedef struct IPPair_ {
     /** list pointers, protected by ippair-queue mutex/spin */
     struct IPPair_ *lnext;
     struct IPPair_ *lprev;
+
+    /** storage api handle as a flex array member, so must stay last */
+    Storage storage[];
 } IPPair;
 
 typedef struct IPPairHashRow_ {