From: Michael Altizer (mialtize) Date: Mon, 3 Feb 2020 14:34:30 +0000 (+0000) Subject: Merge pull request #1976 in SNORT/snort3 from ~DERAMADA/snort3:parse_conf_service_nam... X-Git-Tag: 3.0.0-268~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f3783df7f5ab430a9e4650d634b1695a0e07ba11;p=thirdparty%2Fsnort3.git Merge pull request #1976 in SNORT/snort3 from ~DERAMADA/snort3:parse_conf_service_name to master Squashed commit of the following: commit be557ef9287e921ccaed09b178133315745e56ea Author: deramada Date: Thu Jan 30 14:57:50 2020 -0500 parser: store local copy of service name --- diff --git a/src/parser/parse_conf.cc b/src/parser/parse_conf.cc index c1a69c7e5..6b6c36594 100644 --- a/src/parser/parse_conf.cc +++ b/src/parser/parse_conf.cc @@ -253,10 +253,7 @@ void add_service_to_otn(SnortConfig* sc, OptTreeNode* otn, const char* svc_name) } if ( !strcmp(svc_name, "http") ) - { add_service_to_otn(sc, otn, "http2"); - svc_name = "http"; - } if (otn->sigInfo.num_services >= sc->max_metadata_services) { diff --git a/src/parser/parse_rule.cc b/src/parser/parse_rule.cc index 9ae690d9c..32470ec6b 100644 --- a/src/parser/parse_rule.cc +++ b/src/parser/parse_rule.cc @@ -1242,7 +1242,12 @@ void parse_rule_close(SnortConfig* sc, RuleTreeNode& rtn, OptTreeNode* otn) OtnLookupAdd(sc->otn_map, otn); if ( is_service_protocol(otn->snort_protocol_id) ) - add_service_to_otn(sc, otn, sc->proto_ref->get_name(otn->snort_protocol_id)); + { + // copy required because the call to add_service_to_otn can + // invalidate the service name pointer + std::string service = sc->proto_ref->get_name(otn->snort_protocol_id); + add_service_to_otn(sc, otn, service.c_str()); + } /* * The src/dst port parsing must be done before the Head Nodes are processed, since they must