From: Russ Combs (rucombs) Date: Tue, 7 Jan 2025 14:49:39 +0000 (+0000) Subject: Pull request #4561: Tsanity1 X-Git-Tag: 3.6.2.0~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5b96758c07ec430f6b872bd24801a8f4af7b6d06;p=thirdparty%2Fsnort3.git Pull request #4561: Tsanity1 Merge in SNORT/snort3 from ~RUCOMBS/snort3:tsanity1 to master Squashed commit of the following: commit ddec702eca36358fe5238fa2cee3664bc20d0f9d Author: Russ Combs Date: Thu Dec 19 09:47:37 2024 -0500 data_bus: fix publisher registration data races commit da6d5590d82cd4d123029f00e4b18d4de46bf72d Author: Russ Combs Date: Thu Dec 19 07:42:03 2024 -0500 hyperscan: fix debug log tsan issue --- diff --git a/src/detection/detection_options.cc b/src/detection/detection_options.cc index a5e9d7b68..14a8dcbb0 100644 --- a/src/detection/detection_options.cc +++ b/src/detection/detection_options.cc @@ -290,6 +290,9 @@ void* add_detection_option(SnortConfig* sc, option_type_t type, void* option_dat void print_option_tree(detection_option_tree_node_t* node, int level) { #ifdef DEBUG_MSGS + if ( !trace_enabled(detection_trace, TRACE_OPTION_TREE) ) + return; + char buf[32]; const char* opt; diff --git a/src/network_inspectors/appid/appid_inspector.cc b/src/network_inspectors/appid/appid_inspector.cc index 0138dbff0..1a3d58f25 100644 --- a/src/network_inspectors/appid/appid_inspector.cc +++ b/src/network_inspectors/appid/appid_inspector.cc @@ -165,7 +165,9 @@ bool AppIdInspector::configure(SnortConfig* sc) DataBus::subscribe_global(intrinsic_pub_key, IntrinsicEventIds::FLOW_NO_SERVICE, new AppIdServiceEventHandler(*this), *sc); - cached_global_pub_id = DataBus::get_id(appid_pub_key); + if (!cached_global_pub_id) + cached_global_pub_id = DataBus::get_id(appid_pub_key); + appid_pub_id = cached_global_pub_id; return true; } diff --git a/src/network_inspectors/reputation/reputation_inspect.cc b/src/network_inspectors/reputation/reputation_inspect.cc index b033d13bf..0cb23784d 100644 --- a/src/network_inspectors/reputation/reputation_inspect.cc +++ b/src/network_inspectors/reputation/reputation_inspect.cc @@ -583,7 +583,9 @@ bool Reputation::configure(SnortConfig*) DataBus::subscribe_network(intrinsic_pub_key, IntrinsicEventIds::AUXILIARY_IP, new AuxiliaryIpRepHandler(*this)); DataBus::subscribe_network(intrinsic_pub_key, IntrinsicEventIds::PKT_WITHOUT_FLOW, new IpRepHandler(*this)); - pub_id = DataBus::get_id(reputation_pub_key); + if (!pub_id) + pub_id = DataBus::get_id(reputation_pub_key); + return true; } diff --git a/src/network_inspectors/rna/rna_inspector.cc b/src/network_inspectors/rna/rna_inspector.cc index bdd8ccf62..36f5ce57e 100644 --- a/src/network_inspectors/rna/rna_inspector.cc +++ b/src/network_inspectors/rna/rna_inspector.cc @@ -94,7 +94,8 @@ RnaInspector::~RnaInspector() bool RnaInspector::configure(SnortConfig*) { - RnaConfig::pub_id = DataBus::get_id(rna_pub_key); + if (!RnaConfig::pub_id) + RnaConfig::pub_id = DataBus::get_id(rna_pub_key); DataBus::subscribe_network( appid_pub_key, AppIdEventIds::ANY_CHANGE, new RnaAppidEventHandler(*pnd) ); DataBus::subscribe_network( appid_pub_key, AppIdEventIds::DHCP_INFO, new RnaDHCPInfoEventHandler(*pnd) ); diff --git a/src/service_inspectors/cip/cip.cc b/src/service_inspectors/cip/cip.cc index d143e4a95..562de43e8 100644 --- a/src/service_inspectors/cip/cip.cc +++ b/src/service_inspectors/cip/cip.cc @@ -267,21 +267,16 @@ private: }; Cip::Cip(CipProtoConf* pc) -{ - config = pc; -} +{ config = pc; } Cip::~Cip() -{ - if (config) - { - delete config; - } -} +{ delete config; } bool Cip::configure(SnortConfig*) { - CipEventData::pub_id = DataBus::get_id(cip_pub_key); + if (!CipEventData::pub_id) + CipEventData::pub_id = DataBus::get_id(cip_pub_key); + return true; } diff --git a/src/service_inspectors/dce_rpc/dce_tcp.cc b/src/service_inspectors/dce_rpc/dce_tcp.cc index ee469a4ac..05fed1bb7 100644 --- a/src/service_inspectors/dce_rpc/dce_tcp.cc +++ b/src/service_inspectors/dce_rpc/dce_tcp.cc @@ -119,7 +119,10 @@ Dce2Tcp::Dce2Tcp(const dce2TcpProtoConf& pc) : bool Dce2Tcp::configure(snort::SnortConfig* sc) { esm.set_proto_id(sc->proto_ref->add(DCE_RPC_SERVICE_NAME)); - pub_id = DataBus::get_id(dce_tcp_pub_key); + + if (!pub_id) + pub_id = DataBus::get_id(dce_tcp_pub_key); + return true; } diff --git a/src/service_inspectors/dns/dns.cc b/src/service_inspectors/dns/dns.cc index 78951c4a6..16544a91b 100644 --- a/src/service_inspectors/dns/dns.cc +++ b/src/service_inspectors/dns/dns.cc @@ -1113,7 +1113,9 @@ void Dns::eval(Packet* p) bool Dns::configure(snort::SnortConfig*) { - pub_id = DataBus::get_id(dns_pub_key); + if ( !pub_id ) + pub_id = DataBus::get_id(dns_pub_key); + return true; } diff --git a/src/service_inspectors/ftp_telnet/ftp.cc b/src/service_inspectors/ftp_telnet/ftp.cc index 51f67c422..5190890b0 100644 --- a/src/service_inspectors/ftp_telnet/ftp.cc +++ b/src/service_inspectors/ftp_telnet/ftp.cc @@ -263,7 +263,9 @@ FtpServer::~FtpServer () bool FtpServer::configure(SnortConfig* sc) { - pub_id = DataBus::get_id(ftp_pub_key); + if ( !pub_id ) + pub_id = DataBus::get_id(ftp_pub_key); + ftp_data_snort_protocol_id = sc->proto_ref->add("ftp-data"); return !FTPCheckConfigs(sc, ftp_server); } diff --git a/src/service_inspectors/http_inspect/http_inspect.cc b/src/service_inspectors/http_inspect/http_inspect.cc index 6aeebca00..a2321d350 100755 --- a/src/service_inspectors/http_inspect/http_inspect.cc +++ b/src/service_inspectors/http_inspect/http_inspect.cc @@ -141,7 +141,9 @@ bool HttpInspect::configure(SnortConfig* sc) { params->js_norm_param.configure(); params->mime_decode_conf->sync_all_depths(sc); - pub_id = DataBus::get_id(http_pub_key); + + if (!pub_id) + pub_id = DataBus::get_id(http_pub_key); return true; } diff --git a/src/service_inspectors/netflow/netflow.cc b/src/service_inspectors/netflow/netflow.cc index db6094e72..972876247 100644 --- a/src/service_inspectors/netflow/netflow.cc +++ b/src/service_inspectors/netflow/netflow.cc @@ -843,7 +843,9 @@ static std::string to_string(const std::vector & zones) bool NetFlowInspector::configure(SnortConfig*) { - pub_id = DataBus::get_id(netflow_pub_key); + if ( !pub_id ) + pub_id = DataBus::get_id(netflow_pub_key); + return true; } diff --git a/src/service_inspectors/sip/sip.cc b/src/service_inspectors/sip/sip.cc index b0dd6a046..e58dd6b04 100644 --- a/src/service_inspectors/sip/sip.cc +++ b/src/service_inspectors/sip/sip.cc @@ -245,7 +245,9 @@ Sip::~Sip() bool Sip::configure(SnortConfig*) { - SIPData::pub_id = DataBus::get_id(sip_pub_key); + if ( !SIPData::pub_id ) + SIPData::pub_id = DataBus::get_id(sip_pub_key); + return true; } diff --git a/src/service_inspectors/ssh/ssh.cc b/src/service_inspectors/ssh/ssh.cc index 81789dfc8..716d20edb 100644 --- a/src/service_inspectors/ssh/ssh.cc +++ b/src/service_inspectors/ssh/ssh.cc @@ -604,7 +604,9 @@ Ssh::~Ssh() bool Ssh::configure(SnortConfig*) { - pub_id = DataBus::get_id(ssh_pub_key); + if ( !pub_id ) + pub_id = DataBus::get_id(ssh_pub_key); + return true; } diff --git a/src/service_inspectors/ssl/ssl_inspector.cc b/src/service_inspectors/ssl/ssl_inspector.cc index 0fd4fe45a..f576dcc5e 100644 --- a/src/service_inspectors/ssl/ssl_inspector.cc +++ b/src/service_inspectors/ssl/ssl_inspector.cc @@ -514,7 +514,8 @@ void Ssl::eval(Packet* p) bool Ssl::configure(SnortConfig*) { - pub_id = DataBus::get_id(ssl_pub_key); + if ( !pub_id ) + pub_id = DataBus::get_id(ssl_pub_key); DataBus::subscribe(intrinsic_pub_key, IntrinsicEventIds::FINALIZE_PACKET, new SslFinalizePacketHandler()); DataBus::subscribe(intrinsic_pub_key, IntrinsicEventIds::OPPORTUNISTIC_TLS, new SslStartTlsEventtHandler()); diff --git a/src/stream/stream.cc b/src/stream/stream.cc index 3b9a808a6..d003386cb 100644 --- a/src/stream/stream.cc +++ b/src/stream/stream.cc @@ -858,7 +858,10 @@ bool Stream::get_held_pkt_seq(Flow* flow, uint32_t& seq) static unsigned stream_pub_id = 0; void Stream::set_pub_id() -{ stream_pub_id = DataBus::get_id(stream_pub_key); } +{ + if ( !stream_pub_id ) + stream_pub_id = DataBus::get_id(stream_pub_key); +} unsigned Stream::get_pub_id() { return stream_pub_id; }