From: Ashik Thomas (ashiktho) Date: Fri, 1 Mar 2024 06:16:55 +0000 (+0000) Subject: Pull request #4220: smb: fix for improper session cache destruction in tterm during... X-Git-Tag: 3.1.82.0~11 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=76bffc019ab52732348a820bbf9e39d2e28c36fe;p=thirdparty%2Fsnort3.git Pull request #4220: smb: fix for improper session cache destruction in tterm during config reload Merge in SNORT/snort3 from ~ASHIKTHO/snort3:CSCwi63586_H_2 to master Squashed commit of the following: commit eacf9039ca9a09319adb944ebb948cdd42e158be Author: Ashik Thomas 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 Date: Wed Feb 21 00:19:10 2024 +0530 smb: fix for improper session cache destruction in tterm during config reload --- diff --git a/src/service_inspectors/dce_rpc/dce_smb.cc b/src/service_inspectors/dce_rpc/dce_smb.cc index b5106b327..abc5ad191 100644 --- a/src/service_inspectors/dce_rpc/dce_smb.cc +++ b/src/service_inspectors/dce_rpc/dce_smb.cc @@ -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