From: Victor Julien Date: Fri, 20 Feb 2015 09:40:32 +0000 (+0100) Subject: multi-detect: refuse to add duplicate tenant X-Git-Tag: suricata-3.0RC1~205 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=642c267dc4aa8af62fbdc95ddb61c52055093d8e;p=thirdparty%2Fsuricata.git multi-detect: refuse to add duplicate tenant Generate error if tentant to be added is already loaded. --- diff --git a/src/detect-engine.c b/src/detect-engine.c index 163874c9d9..87ef62ea63 100644 --- a/src/detect-engine.c +++ b/src/detect-engine.c @@ -1702,6 +1702,14 @@ int DetectEngineMultiTenantLoadTenant(uint32_t tenant_id, const char *filename) goto error; } + de_ctx = DetectEngineGetByTenantId(tenant_id); + if (de_ctx != NULL) { + SCLogError(SC_ERR_MT_DUPLICATE_TENANT, "tenant %u already registered", + tenant_id); + DetectEngineDeReference(&de_ctx); + goto error; + } + if (ConfYamlLoadFileWithPrefix(filename, prefix) != 0) { SCLogError(SC_ERR_CONF_YAML_ERROR, "failed to load yaml %s", filename); goto error; @@ -1733,6 +1741,9 @@ int DetectEngineMultiTenantLoadTenant(uint32_t tenant_id, const char *filename) return 0; error: + if (de_ctx != NULL) { + DetectEngineCtxFree(de_ctx); + } return -1; } diff --git a/src/util-error.c b/src/util-error.c index cb59c0f564..6e783f42e4 100644 --- a/src/util-error.c +++ b/src/util-error.c @@ -308,6 +308,7 @@ const char * SCErrorToString(SCError err) CASE_CODE (SC_ERR_NETMAP_READ); CASE_CODE (SC_ERR_IPPAIR_INIT); CASE_CODE (SC_ERR_MT_NO_SELECTOR); + CASE_CODE (SC_ERR_MT_DUPLICATE_TENANT); } return "UNKNOWN_ERROR"; diff --git a/src/util-error.h b/src/util-error.h index 97c1cd23d2..d1e42a8cdd 100644 --- a/src/util-error.h +++ b/src/util-error.h @@ -297,6 +297,7 @@ typedef enum { SC_ERR_THREAD_DEINIT, /**< thread's deinit function failed */ SC_ERR_IPPAIR_INIT, SC_ERR_MT_NO_SELECTOR, + SC_ERR_MT_DUPLICATE_TENANT, } SCError; const char *SCErrorToString(SCError);