]> git.ipfire.org Git - thirdparty/snort3.git/commitdiff
Pull request #4220: smb: fix for improper session cache destruction in tterm during...
authorAshik Thomas (ashiktho) <ashiktho@cisco.com>
Fri, 1 Mar 2024 06:16:55 +0000 (06:16 +0000)
committerBhargava Jandhyala (bjandhya) <bjandhya@cisco.com>
Fri, 1 Mar 2024 06:16:55 +0000 (06:16 +0000)
Merge in SNORT/snort3 from ~ASHIKTHO/snort3:CSCwi63586_H_2 to master

Squashed commit of the following:

commit eacf9039ca9a09319adb944ebb948cdd42e158be
Author: Ashik Thomas <ashiktho@cisco.com>
Date:   Tue Feb 27 13:26:06 2024 +0530

    smb: fix for improper session cache destruction in tterm during config reload - review comments

commit 3545adcb934ede0d6d4c18c1a009de70f691e4f3
Author: Ashik Thomas <ashiktho@cisco.com>
Date:   Wed Feb 21 00:19:10 2024 +0530

    smb: fix for improper session cache destruction in tterm during config reload

src/service_inspectors/dce_rpc/dce_smb.cc

index b5106b327efc366e3a0bea8b74e8e0192afa605e..abc5ad1918bb3809b0bf4d63cccc4766a5f0a1df 100644 (file)
@@ -38,6 +38,7 @@
 
 using namespace snort;
 
+static size_t smb_memcap;
 THREAD_LOCAL dce2SmbStats dce2_smb_stats;
 THREAD_LOCAL ProfileStats dce2_smb_pstat_main;
 
@@ -318,9 +319,6 @@ public:
     explicit Dce2SmbInspector(const dce2SmbProtoConf&);
     ~Dce2SmbInspector() override;
 
-    void tinit() override;
-    void tterm() override;
-
     void show(const SnortConfig*) const override;
     void eval(Packet*) override;
     void clear(Packet*) override;
@@ -437,19 +435,6 @@ void Dce2SmbInspector::clear(Packet* p)
         DCE2_ResetRopts(sd, p);
 }
 
-void Dce2SmbInspector::tinit()
-{
-    delete smb2_session_cache;
-    size_t smb_memcap = DCE2_ScSmbMemcap(&config);
-    DCE2_SmbSessionCacheInit(smb_memcap);
-}
-
-void Dce2SmbInspector::tterm()
-{
-    delete smb2_session_cache;
-    smb2_session_cache = nullptr;
-}
-
 //-------------------------------------------------------------------------
 // api stuff
 //-------------------------------------------------------------------------
@@ -472,11 +457,24 @@ static void dce2_smb_init()
     DceContextData::init(DCE2_TRANS_TYPE__SMB);
 }
 
+static void dce2_smb_tinit()
+{
+    delete smb2_session_cache;
+    DCE2_SmbSessionCacheInit(smb_memcap);
+}
+
+static void dce2_smb_tterm()
+{
+    delete smb2_session_cache;
+    smb2_session_cache = nullptr;
+}
+
 static Inspector* dce2_smb_ctor(Module* m)
 {
     Dce2SmbModule* mod = (Dce2SmbModule*)m;
     dce2SmbProtoConf config;
     mod->get_data(config);
+    smb_memcap = DCE2_ScSmbMemcap(&config);
     return new Dce2SmbInspector(config);
 }
 
@@ -513,8 +511,8 @@ const InspectApi dce2_smb_api =
     "netbios-ssn",
     dce2_smb_init,
     nullptr, // pterm
-    nullptr, // tinit
-    nullptr, // tterm
+    dce2_smb_tinit, // tinit
+    dce2_smb_tterm, // tterm
     dce2_smb_ctor,
     dce2_smb_dtor,
     nullptr, // ssn