From: Shivani Bhardwaj Date: Thu, 10 Sep 2020 11:34:21 +0000 (+0530) Subject: datasets: allow max possible memcap while loading X-Git-Tag: suricata-6.0.0-rc1~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b2482d6c609e279b2ccb689e57603196952df759;p=thirdparty%2Fsuricata.git datasets: allow max possible memcap while loading 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. --- diff --git a/src/datasets.c b/src/datasets.c index 64c6b9c033..736b38f92e 100644 --- a/src/datasets.c +++ b/src/datasets.c @@ -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) diff --git a/src/util-thash.c b/src/util-thash.c index 876a9cac67..4c5cadbdc2 100644 --- a/src/util-thash.c +++ b/src/util-thash.c @@ -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); diff --git a/src/util-thash.h b/src/util-thash.h index 96ee8e0579..17edb88928 100644 --- a/src/util-thash.h +++ b/src/util-thash.h @@ -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);