]> git.ipfire.org Git - thirdparty/suricata.git/commitdiff
multi-detect: refuse to add duplicate tenant
authorVictor Julien <victor@inliniac.net>
Fri, 20 Feb 2015 09:40:32 +0000 (10:40 +0100)
committerVictor Julien <victor@inliniac.net>
Thu, 23 Jul 2015 17:36:15 +0000 (19:36 +0200)
Generate error if tentant to be added is already loaded.

src/detect-engine.c
src/util-error.c
src/util-error.h

index 163874c9d9bacd18b03d9be01381d0f301d31422..87ef62ea63f49ceae9d4f1a2f72e57761f0e4499 100644 (file)
@@ -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;
 }
 
index cb59c0f5640428d9b987aee16a1d152ad12507ae..6e783f42e4cf2f170ec53e4887add879c6fbda0e 100644 (file)
@@ -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";
index 97c1cd23d2a50b56e3ed0f28edd7232870fcc68d..d1e42a8cdd4eec368f61d3b8b961b4dc9b1390e3 100644 (file)
@@ -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);