]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
datasets: allow max possible memcap while loading
authorShivani Bhardwaj <shivanib134@gmail.com>
Thu, 10 Sep 2020 11:34:21 +0000 (17:04 +0530)
committerVictor Julien <victor@inliniac.net>
Thu, 10 Sep 2020 18:56:15 +0000 (20:56 +0200)
While using the "load" option of datasets, it should be possible to load
any file from the disk, so set the limit to highest possible.

src/datasets.c
src/util-thash.c
src/util-thash.h

index 64c6b9c033a80c098ec4cbd651c22a9c46b59f65..736b38f92e5381a01ddd8c4e4f0a1b5d0bae8d39 100644 (file)
@@ -490,7 +490,7 @@ Dataset *DatasetGet(const char *name, enum DatasetTypes type,
     switch (type) {
         case DATASET_TYPE_MD5:
             set->hash = THashInit(cnf_name, sizeof(Md5Type), Md5StrSet,
-                    Md5StrFree, Md5StrHash, Md5StrCompare);
+                    Md5StrFree, Md5StrHash, Md5StrCompare, load != NULL ? 1 : 0);
             if (set->hash == NULL)
                 goto out_err;
             if (DatasetLoadMd5(set) < 0)
@@ -498,7 +498,7 @@ Dataset *DatasetGet(const char *name, enum DatasetTypes type,
             break;
         case DATASET_TYPE_STRING:
             set->hash = THashInit(cnf_name, sizeof(StringType), StringSet,
-                    StringFree, StringHash, StringCompare);
+                    StringFree, StringHash, StringCompare, load != NULL ? 1 : 0);
             if (set->hash == NULL)
                 goto out_err;
             if (DatasetLoadString(set) < 0)
@@ -506,7 +506,7 @@ Dataset *DatasetGet(const char *name, enum DatasetTypes type,
             break;
         case DATASET_TYPE_SHA256:
             set->hash = THashInit(cnf_name, sizeof(Sha256Type), Sha256StrSet,
-                    Sha256StrFree, Sha256StrHash, Sha256StrCompare);
+                    Sha256StrFree, Sha256StrHash, Sha256StrCompare, load != NULL ? 1 : 0);
             if (set->hash == NULL)
                 goto out_err;
             if (DatasetLoadSha256(set) < 0)
index 876a9cac67fcc26bfde7e98a13587ebcfae24d78..4c5cadbdc2bfdf87839ecf304c8984c63cf0e553 100644 (file)
@@ -294,7 +294,8 @@ THashTableContext* THashInit(const char *cnf_prefix, size_t data_size,
     int (*DataSet)(void *, void *),
      void (*DataFree)(void *),
      uint32_t (*DataHash)(void *),
-     bool (*DataCompare)(void *, void *))
+     bool (*DataCompare)(void *, void *),
+     bool reset_memcap)
 {
     THashTableContext *ctx = SCCalloc(1, sizeof(*ctx));
     BUG_ON(!ctx);
@@ -308,7 +309,7 @@ THashTableContext* THashInit(const char *cnf_prefix, size_t data_size,
     /* set defaults */
     ctx->config.hash_rand = (uint32_t)RandomGet();
     ctx->config.hash_size = THASH_DEFAULT_HASHSIZE;
-    ctx->config.memcap = THASH_DEFAULT_MEMCAP;
+    ctx->config.memcap = reset_memcap ? UINT64_MAX : THASH_DEFAULT_MEMCAP;
     ctx->config.prealloc = THASH_DEFAULT_PREALLOC;
 
     SC_ATOMIC_INIT(ctx->counter);
index 96ee8e05790e5380da1bacbc6ff644e6d36eb487..17edb889283e86f6adb83e33bc79d5f19dc72c65 100644 (file)
@@ -189,7 +189,8 @@ THashTableContext* THashInit(const char *cnf_prefix, size_t data_size,
     int (*DataSet)(void *dst, void *src),
     void (*DataFree)(void *),
     uint32_t (*DataHash)(void *),
-    bool (*DataCompare)(void *, void *));
+    bool (*DataCompare)(void *, void *),
+    bool reset_memcap);
 
 void THashShutdown(THashTableContext *ctx);