]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
dce_rpc: close command memory leak fix
authorJITHENDIRAN EASWARAMURTHY KOUSALYA <jieaswar@cisco.com>
Fri, 10 Apr 2026 11:10:29 +0000 (16:40 +0530)
committerGitHub <noreply@github.com>
Fri, 10 Apr 2026 11:10:29 +0000 (16:40 +0530)
src/service_inspectors/dce_rpc/dce_smb.h
src/service_inspectors/dce_rpc/dce_smb2_commands.cc
src/service_inspectors/dce_rpc/dce_smb_module.cc

index f2265daf3bb3b626bfd67a69c6f4b0b147f95439..3ea59ffd1f279871c50f6e0753b23648ae7827e0 100644 (file)
@@ -226,6 +226,7 @@ struct dce2SmbStats : public LruCacheLocalStats
     PegCount v2_cls_inv_str_sz;
     PegCount v2_cls_req_ftrkr_misng;
     PegCount v2_cls_req_hdr_err;
+    PegCount v2_cls_rtrkr_ins_fail;
     PegCount v2_tree_discn;
     PegCount v2_tree_discn_ignored;
     PegCount v2_tree_discn_inv_str_sz;
index f18c1ff54c4107f4cf1c3d0e76881daa51faa6de..5e01789475e05d014b9656b74d71161fa3399876 100644 (file)
@@ -665,7 +665,15 @@ void DCE2_Smb2CloseCmd(DCE2_Smb2SsnData* ssd, const Smb2Hdr* smb_hdr,
             auto rtracker = new DCE2_Smb2RequestTracker(fileId_persistent);
             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_cls_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_CLOSE], mid);
+                delete rtracker;
+            }
         }
 
         if (SMB2_SHARE_TYPE_DISK == ttr->get_share_type() and !ftracker->ignore
index 9df39f070059e488fdbe6af3cea9d228b5aa2b4b..74f7fd02d487fa6c926aaf483965af9b3e99110a 100644 (file)
@@ -147,6 +147,8 @@ static const PegInfo dce2_smb_pegs[] =
       "total number of SMBv2 close request packets ignored due to missing file tracker" },
     { CountType::SUM, "v2_cls_req_hdr_err",
       "total number of SMBv2 close request packets ignored due to corrupted header" },
+    { CountType::SUM, "v2_cls_rtrkr_ins_fail",
+      "total number of SMBv2 close request packets failed due to request tracker insert failure" },
     { CountType::SUM, "v2_tree_discn",
       "total number of SMBv2 tree disconnect packets seen" },
     { CountType::SUM, "v2_tree_discn_ignored",