mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Add validity checking/warnings for Broker messages
This commit is contained in:
parent
1ee96516e8
commit
018f687c33
4 changed files with 50 additions and 2 deletions
6
CHANGES
6
CHANGES
|
@ -1,4 +1,10 @@
|
||||||
|
|
||||||
|
2.6-113 | 2019-02-06 13:17:39 -0600
|
||||||
|
|
||||||
|
* Add validity checking/warnings for Broker messages (Jon Siwek, Corelight)
|
||||||
|
|
||||||
|
* Fix crash when using debug.log. (Johanna Amann, Corelight)
|
||||||
|
|
||||||
2.6-111 | 2019-01-29 18:17:35 -0600
|
2.6-111 | 2019-01-29 18:17:35 -0600
|
||||||
|
|
||||||
* Fix memory leak due to enum type/val circular references (Jon Siwek, Corelight)
|
* Fix memory leak due to enum type/val circular references (Jon Siwek, Corelight)
|
||||||
|
|
2
VERSION
2
VERSION
|
@ -1 +1 @@
|
||||||
2.6-111
|
2.6-113
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
Subproject commit bf734622dceaafaf7a481185efd22bd7cc805f9b
|
Subproject commit 7aade6299e8d88479a00e76212672c367e94cffd
|
|
@ -840,6 +840,11 @@ double Manager::NextTimestamp(double* local_network_time)
|
||||||
void Manager::DispatchMessage(const broker::topic& topic, broker::data msg)
|
void Manager::DispatchMessage(const broker::topic& topic, broker::data msg)
|
||||||
{
|
{
|
||||||
switch ( broker::bro::Message::type(msg) ) {
|
switch ( broker::bro::Message::type(msg) ) {
|
||||||
|
case broker::bro::Message::Type::Invalid:
|
||||||
|
reporter->Warning("received invalid broker message: %s",
|
||||||
|
broker::to_string(msg).data());
|
||||||
|
break;
|
||||||
|
|
||||||
case broker::bro::Message::Type::Event:
|
case broker::bro::Message::Type::Event:
|
||||||
ProcessEvent(topic, std::move(msg));
|
ProcessEvent(topic, std::move(msg));
|
||||||
break;
|
break;
|
||||||
|
@ -860,6 +865,13 @@ void Manager::DispatchMessage(const broker::topic& topic, broker::data msg)
|
||||||
{
|
{
|
||||||
broker::bro::Batch batch(std::move(msg));
|
broker::bro::Batch batch(std::move(msg));
|
||||||
|
|
||||||
|
if ( ! batch.valid() )
|
||||||
|
{
|
||||||
|
reporter->Warning("received invalid broker Batch: %s",
|
||||||
|
broker::to_string(batch).data());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for ( auto& i : batch.batch() )
|
for ( auto& i : batch.batch() )
|
||||||
DispatchMessage(topic, std::move(i));
|
DispatchMessage(topic, std::move(i));
|
||||||
|
|
||||||
|
@ -869,6 +881,8 @@ void Manager::DispatchMessage(const broker::topic& topic, broker::data msg)
|
||||||
default:
|
default:
|
||||||
// We ignore unknown types so that we could add more in the
|
// We ignore unknown types so that we could add more in the
|
||||||
// future if we had too.
|
// future if we had too.
|
||||||
|
reporter->Warning("received unknown broker message: %s",
|
||||||
|
broker::to_string(msg).data());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -934,6 +948,13 @@ void Manager::Process()
|
||||||
|
|
||||||
void Manager::ProcessEvent(const broker::topic& topic, broker::bro::Event ev)
|
void Manager::ProcessEvent(const broker::topic& topic, broker::bro::Event ev)
|
||||||
{
|
{
|
||||||
|
if ( ! ev.valid() )
|
||||||
|
{
|
||||||
|
reporter->Warning("received invalid broker Event: %s",
|
||||||
|
broker::to_string(ev).data());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
auto name = std::move(ev.name());
|
auto name = std::move(ev.name());
|
||||||
auto args = std::move(ev.args());
|
auto args = std::move(ev.args());
|
||||||
|
|
||||||
|
@ -1001,6 +1022,12 @@ void Manager::ProcessEvent(const broker::topic& topic, broker::bro::Event ev)
|
||||||
bool bro_broker::Manager::ProcessLogCreate(broker::bro::LogCreate lc)
|
bool bro_broker::Manager::ProcessLogCreate(broker::bro::LogCreate lc)
|
||||||
{
|
{
|
||||||
DBG_LOG(DBG_BROKER, "Received log-create: %s", RenderMessage(lc).c_str());
|
DBG_LOG(DBG_BROKER, "Received log-create: %s", RenderMessage(lc).c_str());
|
||||||
|
if ( ! lc.valid() )
|
||||||
|
{
|
||||||
|
reporter->Warning("received invalid broker LogCreate: %s",
|
||||||
|
broker::to_string(lc).data());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
auto stream_id = data_to_val(std::move(lc.stream_id()), log_id_type);
|
auto stream_id = data_to_val(std::move(lc.stream_id()), log_id_type);
|
||||||
if ( ! stream_id )
|
if ( ! stream_id )
|
||||||
|
@ -1066,6 +1093,13 @@ bool bro_broker::Manager::ProcessLogWrite(broker::bro::LogWrite lw)
|
||||||
{
|
{
|
||||||
DBG_LOG(DBG_BROKER, "Received log-write: %s", RenderMessage(lw).c_str());
|
DBG_LOG(DBG_BROKER, "Received log-write: %s", RenderMessage(lw).c_str());
|
||||||
|
|
||||||
|
if ( ! lw.valid() )
|
||||||
|
{
|
||||||
|
reporter->Warning("received invalid broker LogWrite: %s",
|
||||||
|
broker::to_string(lw).data());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
++statistics.num_logs_incoming;
|
++statistics.num_logs_incoming;
|
||||||
auto& stream_id_name = lw.stream_id().name;
|
auto& stream_id_name = lw.stream_id().name;
|
||||||
|
|
||||||
|
@ -1145,6 +1179,14 @@ bool bro_broker::Manager::ProcessLogWrite(broker::bro::LogWrite lw)
|
||||||
bool Manager::ProcessIdentifierUpdate(broker::bro::IdentifierUpdate iu)
|
bool Manager::ProcessIdentifierUpdate(broker::bro::IdentifierUpdate iu)
|
||||||
{
|
{
|
||||||
DBG_LOG(DBG_BROKER, "Received id-update: %s", RenderMessage(iu).c_str());
|
DBG_LOG(DBG_BROKER, "Received id-update: %s", RenderMessage(iu).c_str());
|
||||||
|
|
||||||
|
if ( ! iu.valid() )
|
||||||
|
{
|
||||||
|
reporter->Warning("received invalid broker IdentifierUpdate: %s",
|
||||||
|
broker::to_string(iu).data());
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
++statistics.num_ids_incoming;
|
++statistics.num_ids_incoming;
|
||||||
auto id_name = std::move(iu.id_name());
|
auto id_name = std::move(iu.id_name());
|
||||||
auto id_value = std::move(iu.id_value());
|
auto id_value = std::move(iu.id_value());
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue