From: Tom Peters (thopeter) Date: Mon, 8 Oct 2018 21:49:56 +0000 (-0400) Subject: Merge pull request #1376 in SNORT/snort3 from reload_failed_smtp to master X-Git-Tag: 3.0.0-249~33 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b1f0558d205ed887dc8a3c7bfebc94676eb5414e;p=thirdparty%2Fsnort3.git Merge pull request #1376 in SNORT/snort3 from reload_failed_smtp to master Squashed commit of the following: commit 2b102d510abec6dee33d07243a35ca5076223f9e Author: Steven Baigal (sbaigal) Date: Wed Sep 26 12:54:15 2018 -0400 reload: fixed smtp seg fault when reload failed --- diff --git a/src/service_inspectors/smtp/smtp.cc b/src/service_inspectors/smtp/smtp.cc index 320ee4bb1..376d53ef0 100644 --- a/src/service_inspectors/smtp/smtp.cc +++ b/src/service_inspectors/smtp/smtp.cc @@ -245,11 +245,16 @@ static void SMTP_InitCmds(SMTP_PROTO_CONF* config) static void SMTP_TermCmds(SMTP_PROTO_CONF* config) { - for ( int i = 0; i <= config->num_cmds; ++i ) - snort_free(const_cast(config->cmds[i].name)); - - snort_free(config->cmds); - snort_free(config->cmd_config); + if (!config) + return; + if (config->cmds) + { + for ( int i = 0; i <= config->num_cmds; ++i ) + snort_free(const_cast(config->cmds[i].name)); + snort_free(config->cmds); + } + if (config->cmd_config) + snort_free(config->cmd_config); } static void SMTP_CommandSearchInit(SMTP_PROTO_CONF* config) @@ -269,6 +274,8 @@ static void SMTP_CommandSearchInit(SMTP_PROTO_CONF* config) static void SMTP_CommandSearchTerm(SMTP_PROTO_CONF* config) { + if (config->cmd_search == nullptr) + return; snort_free(config->cmd_search); delete config->cmd_search_mpse; } diff --git a/src/service_inspectors/smtp/smtp_config.h b/src/service_inspectors/smtp/smtp_config.h index b579553a2..3546a72a6 100644 --- a/src/service_inspectors/smtp/smtp_config.h +++ b/src/service_inspectors/smtp/smtp_config.h @@ -138,10 +138,10 @@ struct SMTP_PROTO_CONF uint32_t xtra_ehdrs_id; int num_cmds; - SMTPToken* cmds; - SMTPCmdConfig* cmd_config; - SMTPSearch* cmd_search; - snort::SearchTool* cmd_search_mpse; + SMTPToken* cmds = nullptr; + SMTPCmdConfig* cmd_config = nullptr; + SMTPSearch* cmd_search = nullptr; + snort::SearchTool* cmd_search_mpse = nullptr; }; struct SmtpStats