Dataset *DatasetGet(const char *name, enum DatasetTypes type,
const char *save, const char *load)
{
+ if (strlen(name) > DATASET_NAME_MAX_LEN) {
+ return NULL;
+ }
+
SCMutexLock(&sets_lock);
Dataset *set = DatasetSearchByName(name);
if (set) {
SCLogDebug("set \'%s\' loading \'%s\' from \'%s\'", set->name, load, set->load);
}
+ char cnf_name[128];
+ snprintf(cnf_name, sizeof(cnf_name), "datasets.%s.hash", name);
+
switch (type) {
case DATASET_TYPE_MD5:
- set->hash = THashInit(name, sizeof(Md5Type), Md5StrSet,
+ set->hash = THashInit(cnf_name, sizeof(Md5Type), Md5StrSet,
Md5StrFree, Md5StrHash, Md5StrCompare);
if (set->hash == NULL)
goto out_err;
goto out_err;
break;
case DATASET_TYPE_STRING:
- set->hash = THashInit(name, sizeof(StringType), StringSet,
+ set->hash = THashInit(cnf_name, sizeof(StringType), StringSet,
StringFree, StringHash, StringCompare);
if (set->hash == NULL)
goto out_err;
goto out_err;
break;
case DATASET_TYPE_SHA256:
- set->hash = THashInit(name, sizeof(Sha256Type), Sha256StrSet,
+ set->hash = THashInit(cnf_name, sizeof(Sha256Type), Sha256StrSet,
Sha256StrFree, Sha256StrHash, Sha256StrCompare);
if (set->hash == NULL)
goto out_err;
return NULL;
}
-#define SETNAME_MAX 63
-
int DatasetsInit(void)
{
SCLogDebug("datasets start");
char load[PATH_MAX] = "";
const char *set_name = iter->name;
- if (strlen(set_name) > SETNAME_MAX) {
+ if (strlen(set_name) > DATASET_NAME_MAX_LEN) {
FatalError(SC_ERR_CONF_NAME_TOO_LONG, "set name '%s' too long, max %d chars",
- set_name, SETNAME_MAX);
+ set_name, DATASET_NAME_MAX_LEN);
}
ConfNode *set_type =