mirror of
https://github.com/zeek/zeek.git
synced 2025-10-13 03:58:20 +00:00
Remove presumed ownership of HeartbeatTimer
threading::Manager is currently never deleted, but if that ever changes, deleting the stored HeartbeatTimer pointer would be a double-free since TimerMgr owns it.
This commit is contained in:
parent
e62c0e0c9f
commit
7f76381f13
4 changed files with 21 additions and 8 deletions
16
CHANGES
16
CHANGES
|
@ -1,4 +1,20 @@
|
||||||
|
|
||||||
|
3.1.0-dev.551 | 2020-02-05 17:50:56 -0800
|
||||||
|
|
||||||
|
* Remove presumed ownership of HeartbeatTimer (Jon Siwek, Corelight)
|
||||||
|
|
||||||
|
threading::Manager is currently never deleted, but if that ever changes,
|
||||||
|
deleting the stored HeartbeatTimer pointer would be a double-free
|
||||||
|
since TimerMgr owns it.
|
||||||
|
|
||||||
|
* Set threading::Manager terminating state (Jon Siwek, Corelight)
|
||||||
|
|
||||||
|
Coverity CID 1417429
|
||||||
|
|
||||||
|
* Remove unused HeartbeatTimer member: do_expire (Jon Siwek, Corelight)
|
||||||
|
|
||||||
|
Coverity CID 1417434
|
||||||
|
|
||||||
3.1.0-dev.548 | 2020-02-05 14:57:08 -0800
|
3.1.0-dev.548 | 2020-02-05 14:57:08 -0800
|
||||||
|
|
||||||
* GH-773: Make EventMgr an IOSource so that events interrupt kevent waits (Tim Wojtulewicz, Corelight)
|
* GH-773: Make EventMgr an IOSource so that events interrupt kevent waits (Tim Wojtulewicz, Corelight)
|
||||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
3.1.0-dev.548
|
3.1.0-dev.551
|
||||||
|
|
|
@ -30,9 +30,6 @@ Manager::~Manager()
|
||||||
{
|
{
|
||||||
if ( all_threads.size() )
|
if ( all_threads.size() )
|
||||||
Terminate();
|
Terminate();
|
||||||
|
|
||||||
if ( heartbeat_timer )
|
|
||||||
delete heartbeat_timer;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void Manager::Terminate()
|
void Manager::Terminate()
|
||||||
|
@ -68,7 +65,7 @@ void Manager::AddThread(BasicThread* thread)
|
||||||
DBG_LOG(DBG_THREADING, "Adding thread %s ...", thread->Name());
|
DBG_LOG(DBG_THREADING, "Adding thread %s ...", thread->Name());
|
||||||
all_threads.push_back(thread);
|
all_threads.push_back(thread);
|
||||||
|
|
||||||
if ( ! heartbeat_timer )
|
if ( ! heartbeat_timer_running )
|
||||||
StartHeartbeatTimer();
|
StartHeartbeatTimer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -127,8 +124,8 @@ void Manager::SendHeartbeats()
|
||||||
|
|
||||||
void Manager::StartHeartbeatTimer()
|
void Manager::StartHeartbeatTimer()
|
||||||
{
|
{
|
||||||
heartbeat_timer = new HeartbeatTimer(network_time + BifConst::Threading::heartbeat_interval);
|
heartbeat_timer_running = true;
|
||||||
timer_mgr->Add(heartbeat_timer);
|
timer_mgr->Add(new HeartbeatTimer(network_time + BifConst::Threading::heartbeat_interval));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Manager::Flush()
|
void Manager::Flush()
|
||||||
|
|
|
@ -136,7 +136,7 @@ private:
|
||||||
|
|
||||||
msg_stats_list stats;
|
msg_stats_list stats;
|
||||||
|
|
||||||
HeartbeatTimer* heartbeat_timer = nullptr;
|
bool heartbeat_timer_running = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue