runmodes: introduce unknown engine mode

Querying an engine mode with an unknown value signals a bug when
the engine mode has not been determined but is already queried by
other functions.

Ticket: #5959
pull/8791/head
Lukas Sismis 2 years ago committed by Victor Julien
parent 8f1c39bb1c
commit f961d3bb95

@ -232,6 +232,7 @@ void RunUnittests(int list_unittests, const char *regex_arg)
#ifdef UNITTESTS
/* Initializations for global vars, queues, etc (memsets, mutex init..) */
GlobalsInitPreConfig();
EngineModeSetIDS();
#ifdef HAVE_LUAJIT
if (LuajitSetupStatesPool() != 0) {

@ -169,7 +169,7 @@ int run_mode = RUNMODE_UNKNOWN;
/** Engine mode: inline (ENGINE_MODE_IPS) or just
* detection mode (ENGINE_MODE_IDS by default) */
static enum EngineMode g_engine_mode = ENGINE_MODE_IDS;
static enum EngineMode g_engine_mode = ENGINE_MODE_UNKNOWN;
/** Host mode: set if box is sniffing only
* or is a router */
@ -209,13 +209,20 @@ int SuriHasSigFile(void)
return (suricata.sig_file != NULL);
}
int EngineModeIsUnknown(void)
{
return (g_engine_mode == ENGINE_MODE_UNKNOWN);
}
int EngineModeIsIPS(void)
{
DEBUG_VALIDATE_BUG_ON(g_engine_mode == ENGINE_MODE_UNKNOWN);
return (g_engine_mode == ENGINE_MODE_IPS);
}
int EngineModeIsIDS(void)
{
DEBUG_VALIDATE_BUG_ON(g_engine_mode == ENGINE_MODE_UNKNOWN);
return (g_engine_mode == ENGINE_MODE_IDS);
}
@ -2676,6 +2683,11 @@ int PostConfLoadedSetup(SCInstance *suri)
RunModeEngineIsIPS(
suricata.run_mode, suricata.runmode_custom_mode, suricata.capture_plugin_name);
if (EngineModeIsUnknown()) { // if still uninitialized, set the default
SCLogInfo("Setting engine mode to IDS mode by default");
EngineModeSetIDS();
}
SetMasterExceptionPolicy();
AppLayerSetup();

@ -99,12 +99,14 @@ enum {
/* Engine is acting as */
enum EngineMode {
ENGINE_MODE_UNKNOWN,
ENGINE_MODE_IDS,
ENGINE_MODE_IPS,
};
void EngineModeSetIPS(void);
void EngineModeSetIDS(void);
int EngineModeIsUnknown(void);
int EngineModeIsIPS(void);
int EngineModeIsIDS(void);

@ -45,6 +45,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
}
MpmTableSetup();
SpmTableSetup();
EngineModeSetIDS();
AppLayerProtoDetectSetup();
AppLayerParserSetup();
AppLayerParserRegisterProtocolParsers();

@ -26,6 +26,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
run_mode = RUNMODE_UNITTEST;
MpmTableSetup();
SpmTableSetup();
EngineModeSetIDS();
SigTableSetup();
SCReferenceConfInit();
SCClassConfInit();

Loading…
Cancel
Save