From: Bhargava Jandhyala (bjandhya) Date: Thu, 12 Jan 2023 13:54:59 +0000 (+0000) Subject: Pull request #3721: dcerpc: handling dcerpc over smbv2 X-Git-Tag: 3.1.52.0~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=33057c5b184cac9b6e966e7ed6e7a23efbe83c58;p=thirdparty%2Fsnort3.git Pull request #3721: dcerpc: handling dcerpc over smbv2 Merge in SNORT/snort3 from ~VKAMBALA/snort3:psirt_74 to master Squashed commit of the following: commit 460a3b2d63914b1422bf3e7d9452facb6c9dd0c6 Author: krishnakanth Date: Tue Jan 10 14:55:52 2023 +0530 dcerpc: handling dcerpc over smbv2 --- diff --git a/src/service_inspectors/dce_rpc/dce_smb2_file.cc b/src/service_inspectors/dce_rpc/dce_smb2_file.cc index 2d04e36cd..5dea17ea4 100644 --- a/src/service_inspectors/dce_rpc/dce_smb2_file.cc +++ b/src/service_inspectors/dce_rpc/dce_smb2_file.cc @@ -236,14 +236,13 @@ bool Dce2Smb2FileTracker::process_data(const uint32_t current_flow_key, const ui current_flow->session_data_mutex.lock(); if (current_flow->get_tcp_flow()) current_flow->get_tcp_flow()->last_data_seen = packet_time(); - + sess->co_tracker_mutex.lock(); if (parent_tree->get_cotracker()) { - sess->co_tracker_mutex.lock(); DCE2_CoProcess(current_flow->get_dce2_session_data(), parent_tree->get_cotracker(), file_data, data_size); - sess->co_tracker_mutex.unlock(); } + sess->co_tracker_mutex.unlock(); current_flow->session_data_mutex.unlock(); return true; } diff --git a/src/service_inspectors/dce_rpc/dce_smb2_tree.cc b/src/service_inspectors/dce_rpc/dce_smb2_tree.cc index ee8465025..1645ec712 100644 --- a/src/service_inspectors/dce_rpc/dce_smb2_tree.cc +++ b/src/service_inspectors/dce_rpc/dce_smb2_tree.cc @@ -171,7 +171,10 @@ void Dce2Smb2TreeTracker::process_close_request(const Smb2Hdr* smb_header, if (share_type != SMB2_SHARE_TYPE_DISK) { + parent_session->co_tracker_mutex.lock(); DCE2_CoCleanTracker(co_tracker); + parent_session->co_tracker_mutex.unlock(); + } } @@ -508,12 +511,12 @@ void Dce2Smb2TreeTracker::process_ioctl_command(const uint8_t command_type, { data_size = UINT16_MAX; } + parent_session->co_tracker_mutex.lock(); if (co_tracker) { - parent_session->co_tracker_mutex.lock(); DCE2_CoProcess(get_dce2_session_data(p->flow), co_tracker, file_data, data_size); - parent_session->co_tracker_mutex.unlock(); } + parent_session->co_tracker_mutex.unlock(); } void Dce2Smb2TreeTracker::process(uint16_t command, uint8_t command_type,