From: JITHENDIRAN EASWARAMURTHY KOUSALYA Date: Wed, 8 Apr 2026 06:21:18 +0000 (+0530) Subject: dce_rpc: create request memory leak fix X-Git-Tag: 3.12.2.0~17 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0134bceecae308482ab4de43e9234562fea89cbd;p=thirdparty%2Fsnort3.git dce_rpc: create request memory leak fix --- diff --git a/src/service_inspectors/dce_rpc/dce_smb.h b/src/service_inspectors/dce_rpc/dce_smb.h index 4ccd9a603..f2265daf3 100644 --- a/src/service_inspectors/dce_rpc/dce_smb.h +++ b/src/service_inspectors/dce_rpc/dce_smb.h @@ -201,6 +201,7 @@ struct dce2SmbStats : public LruCacheLocalStats PegCount v2_crt_rtrkr_misng; PegCount v2_crt_req_ipc; PegCount v2_crt_tree_trkr_misng; + PegCount v2_crt_rtrkr_ins_fail; PegCount v2_wrt; PegCount v2_wrt_err_resp; PegCount v2_wrt_ignored; diff --git a/src/service_inspectors/dce_rpc/dce_smb2_commands.cc b/src/service_inspectors/dce_rpc/dce_smb2_commands.cc index 3c75cd6de..f18c1ff54 100644 --- a/src/service_inspectors/dce_rpc/dce_smb2_commands.cc +++ b/src/service_inspectors/dce_rpc/dce_smb2_commands.cc @@ -376,7 +376,16 @@ static void DCE2_Smb2CreateRequest(DCE2_Smb2SsnData* ssd, auto rtracker = new DCE2_Smb2RequestTracker(file_name, name_len); rtracker->set_session_id(str->session_id); rtracker->set_tree_id(ttr->get_tid()); - ssd->insertRtracker(mid, rtracker); + if (!ssd->insertRtracker(mid, rtracker)) + { + dce2_smb_stats.v2_crt_rtrkr_ins_fail++; + SMB_DEBUG(dce_smb_trace, DEFAULT_TRACE_OPTION_ID, TRACE_ERROR_LEVEL, + DetectionEngine::get_current_packet(), + "%s_REQ: insert req tracker failed for mid %" PRIx64 "\n", + smb2_command_string[SMB2_COM_CREATE], mid); + delete rtracker; + return; + } uint64_t file_id = 0; if (DCE2_IsSmb2DurableReconnect(smb_create_hdr, end, file_id)) { diff --git a/src/service_inspectors/dce_rpc/dce_smb_module.cc b/src/service_inspectors/dce_rpc/dce_smb_module.cc index 3e040225a..9df39f070 100644 --- a/src/service_inspectors/dce_rpc/dce_smb_module.cc +++ b/src/service_inspectors/dce_rpc/dce_smb_module.cc @@ -105,6 +105,8 @@ static const PegInfo dce2_smb_pegs[] = "total number of SMBv2 create request packets ignored as share type is IPC" }, { CountType::SUM, "v2_crt_tree_trkr_misng", "total number of SMBv2 create response packets ignored due to missing tree tracker" }, + { CountType::SUM, "v2_crt_rtrkr_ins_fail", + "total number of SMBv2 create request packets failed due to request tracker insert failure" }, { CountType::SUM, "v2_wrt", "total number of SMBv2 write packets seen" }, { CountType::SUM, "v2_wrt_err_resp", "total number of SMBv2 write error response packets seen" }, { CountType::SUM, "v2_wrt_ignored",