Merge in SNORT/snort3 from ~JALIIMRA/snort3:umbrella_splitter_crash to master
Squashed commit of the following:
commit
76e78a72a86f276e1aaac1fa21d2d24d19029351
Author: Juweria Ali Imran <jaliimra@cisco.com>
Date: Mon Jan 23 14:18:11 2023 -0500
wizard: ensure Wizard is refcounted by MagicSplitter to prevent snort crashes due to memory corruption
StreamSplitter(c2s), wizard_processed_bytes(0)
{
wizard = w;
+ // FIXIT-M: Handle inspector reference elsewhere such that all splitters
+ // are able to be deleted before their inspectors
+ w->add_ref();
// Used only in case of TCP traffic
w->reset(wand, c2s, MagicBook::ArcaneType::TCP);
}
MagicSplitter::~MagicSplitter()
{
+ wizard->rem_ref();
// release trackers
for ( unsigned i = 0; i < wand.curse_tracker.size(); i++ )
delete wand.curse_tracker[i].tracker;
update_perf_base_state(TcpStreamTracker::TCP_CLOSED);
- set_splitter(true, nullptr);
- set_splitter(false, nullptr);
-
if ( restart )
{
flow->restart(free_flow_data);
server.reassembler.clear_paf();
}
+ set_splitter(true, nullptr);
+ set_splitter(false, nullptr);
+
tel.log_internal_event(SESSION_EVENT_CLEAR);
}