From d2b3668a68c842acdb632457a570b308630eac83 Mon Sep 17 00:00:00 2001 From: Philippe Antoine Date: Thu, 16 Jan 2020 08:49:19 +0100 Subject: [PATCH] init: InitGlobal function To be reused by fuzz targets --- src/suricata.c | 31 +++++++++++++++++++++++-------- src/suricata.h | 2 ++ 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/suricata.c b/src/suricata.c index 477eddd83a..99b39c437a 100644 --- a/src/suricata.c +++ b/src/suricata.c @@ -2925,11 +2925,15 @@ static void SuricataMainLoop(SCInstance *suri) } } -int main(int argc, char **argv) -{ - SCInstanceInit(&suricata, argv[0]); +SuricataContext context; + +/** + * \brief Global initialization common to all runmodes. + * + * This can be used by fuzz targets. + */ - SuricataContext context; +int InitGlobal(void) { context.SCLogMessage = SCLogMessage; context.DetectEngineStateFree = DetectEngineStateFree; context.AppLayerDecoderEventsSetEventRaw = @@ -2961,13 +2965,27 @@ int main(int argc, char **argv) UtilSignalHandlerSetup(SIGUSR2, SIG_IGN); if (UtilSignalBlock(SIGUSR2)) { SCLogError(SC_ERR_INITIALIZATION, "SIGUSR2 initialization error"); - exit(EXIT_FAILURE); + return EXIT_FAILURE; } #endif ParseSizeInit(); RunModeRegisterRunModes(); + /* Initialize the configuration module. */ + ConfInit(); + + return 0; +} + +int main(int argc, char **argv) +{ + SCInstanceInit(&suricata, argv[0]); + + if (InitGlobal() != 0) { + exit(EXIT_FAILURE); + } + #ifdef OS_WIN32 /* service initialization */ if (WindowsInitService(argc, argv) != 0) { @@ -2975,9 +2993,6 @@ int main(int argc, char **argv) } #endif /* OS_WIN32 */ - /* Initialize the configuration module. */ - ConfInit(); - if (ParseCommandLine(argc, argv, &suricata) != TM_ECODE_OK) { exit(EXIT_FAILURE); } diff --git a/src/suricata.h b/src/suricata.h index a15b20a2c2..f90b17ae77 100644 --- a/src/suricata.h +++ b/src/suricata.h @@ -188,6 +188,8 @@ int SuriHasSigFile(void); extern int run_mode; +int InitGlobal(void); + void PreRunInit(const int runmode); void PreRunPostPrivsDropInit(const int runmode); void PostRunDeinit(const int runmode, struct timeval *start_time);