Fix addr/string type confusion in Broker::peers()

Broker::NetworkInfo$address is of type string. The Broker::peers() BiF treated
it as an address, which caused ZVal's type validation to flag a
mismatch and abort.

Includes a small tweak to the broker.unpeer test that makes it invoke
Broker::peers(), which breaks in absence of the fix.
This commit is contained in:
Christian Kreibich 2021-08-18 15:16:58 -07:00
parent b28fc77054
commit fa38d81a7b
3 changed files with 4 additions and 2 deletions

View file

@ -117,12 +117,12 @@ function Broker::__peers%(%): PeerInfos
if ( n ) if ( n )
{ {
network_info->Assign(0, zeek::make_intrusive<zeek::AddrVal>(IPAddr(n->address))); network_info->Assign(0, zeek::make_intrusive<zeek::StringVal>(n->address));
network_info->Assign(1, zeek::val_mgr->Port(n->port, TRANSPORT_TCP)); network_info->Assign(1, zeek::val_mgr->Port(n->port, TRANSPORT_TCP));
} }
else else
{ {
network_info->Assign(0, zeek::make_intrusive<zeek::AddrVal>("0.0.0.0")); network_info->Assign(0, zeek::make_intrusive<zeek::StringVal>("0.0.0.0"));
network_info->Assign(1, zeek::val_mgr->Port(0, TRANSPORT_TCP)); network_info->Assign(1, zeek::val_mgr->Port(0, TRANSPORT_TCP));
} }

View file

@ -1,4 +1,5 @@
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. ### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
peered, now 1 peer(s)
Something sender, 1 Something sender, 1
unpeering unpeering
Something sender, 2 Something sender, 2

View file

@ -43,6 +43,7 @@ event zeek_init()
event Broker::peer_added(endpoint: Broker::EndpointInfo, msg: string) event Broker::peer_added(endpoint: Broker::EndpointInfo, msg: string)
{ {
print fmt("peered, now %d peer(s)", |Broker::peers()|);
schedule 2secs { print_something(1) }; schedule 2secs { print_something(1) };
schedule 4secs { unpeer(endpoint) }; schedule 4secs { unpeer(endpoint) };
} }