From: Michael Altizer (mialtize) Date: Tue, 22 Oct 2019 17:50:32 +0000 (-0400) Subject: Merge pull request #1810 in SNORT/snort3 from ~SBAIGAL/snort3:dns_thread_local_fix... X-Git-Tag: 3.0.0-263~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=979ac738b7e94274a3343704d458331e7f3cf79c;p=thirdparty%2Fsnort3.git Merge pull request #1810 in SNORT/snort3 from ~SBAIGAL/snort3:dns_thread_local_fix to master Squashed commit of the following: commit 10494a848f9757b40c049cc43bede52b5800cca6 Author: Steven Baigal (sbaigal) Date: Mon Oct 21 15:43:06 2019 -0400 dns: made changes to make sure DNS parsing is thread safe --- diff --git a/src/service_inspectors/dns/dns.cc b/src/service_inspectors/dns/dns.cc index b98283b7c..1d5bf4cd1 100644 --- a/src/service_inspectors/dns/dns.cc +++ b/src/service_inspectors/dns/dns.cc @@ -61,8 +61,6 @@ static void snort_dns(Packet* p); unsigned DnsFlowData::inspector_id = 0; -DNSData udpSessionData; - DnsFlowData::DnsFlowData() : FlowData(inspector_id) { memset(&session, 0, sizeof(session)); @@ -90,7 +88,7 @@ static DNSData* SetNewDNSData(Packet* p) return &fd->session; } -static DNSData* get_dns_session_data(Packet* p, bool from_server) +static DNSData* get_dns_session_data(Packet* p, bool from_server, DNSData& udpSessionData) { DnsFlowData* fd; @@ -976,9 +974,9 @@ static void snort_dns(Packet* p) // Get the direction of the packet. bool from_server = ( (p->is_from_server() ) ? true : false ); - + DNSData udp_session_data; // Attempt to get a previously allocated DNS block. - DNSData* dnsSessionData = get_dns_session_data(p, from_server); + DNSData* dnsSessionData = get_dns_session_data(p, from_server, udp_session_data); if (dnsSessionData == nullptr) {