multi-detect: refuse to add duplicate tenant

Generate error if tentant to be added is already loaded.
pull/1608/head
Victor Julien 10 years ago
parent 4e0683c3f5
commit 642c267dc4

@ -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;
}

@ -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";

@ -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);

Loading…
Cancel
Save