diff --git a/src/broker/Manager.cc b/src/broker/Manager.cc index dbe598311b..9499e619d6 100644 --- a/src/broker/Manager.cc +++ b/src/broker/Manager.cc @@ -1582,6 +1582,13 @@ void Manager::ProcessStoreResponse(detail::StoreHandleVal* s, broker::store::res } detail::StoreHandleVal* Manager::MakeMaster(const string& name, broker::backend type, broker::backend_options opts) { + if ( ! bstate ) { + if ( zeek::detail::current_scope() == zeek::detail::global_scope() ) + reporter->Error("Broker stores cannot be created at the global scope"); + + return nullptr; + } + if ( bstate->endpoint.is_shutdown() ) return nullptr; diff --git a/testing/btest/Baseline/broker.store.create-global-failure/out b/testing/btest/Baseline/broker.store.create-global-failure/out new file mode 100644 index 0000000000..c6bbf65e0a --- /dev/null +++ b/testing/btest/Baseline/broker.store.create-global-failure/out @@ -0,0 +1,3 @@ +### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63. +error in <...>/create-global-failure.zeek, line 5: Broker stores cannot be created at the global scope +error in <...>/create-global-failure.zeek, line 5: Could not create Broker master store 'store' diff --git a/testing/btest/broker/store/create-global-failure.zeek b/testing/btest/broker/store/create-global-failure.zeek new file mode 100644 index 0000000000..91806e74ac --- /dev/null +++ b/testing/btest/broker/store/create-global-failure.zeek @@ -0,0 +1,6 @@ +# @TEST-DOC: Tests that creating a broker store at global scope returns an error +# @TEST-EXEC-FAIL: zeek -b %INPUT >out 2>&1 +# @TEST-EXEC: TEST_DIFF_CANONIFIER=$SCRIPTS/diff-remove-abspath btest-diff out + +const x = Broker::create_master("store"); +global t: table[string] of count &broker_store="store";