@@ -296,7 +296,7 @@ inline CAddress ConsumeAddress(FuzzedDataProvider& fuzzed_data_provider) noexcep
296296}
297297
298298template <bool ReturnUniquePtr = false >
299- auto ConsumeNode (FuzzedDataProvider& fuzzed_data_provider, const std::optional<NodeId>& node_id_in = nullopt ) noexcept
299+ auto ConsumeNode (FuzzedDataProvider& fuzzed_data_provider, const std::optional<NodeId>& node_id_in = std:: nullopt ) noexcept
300300{
301301 const NodeId node_id = node_id_in.value_or (fuzzed_data_provider.ConsumeIntegral <NodeId>());
302302 const ServiceFlags local_services = ConsumeWeakEnum (fuzzed_data_provider, ALL_SERVICE_FLAGS);
@@ -316,6 +316,23 @@ auto ConsumeNode(FuzzedDataProvider& fuzzed_data_provider, const std::optional<N
316316}
317317inline std::unique_ptr<CNode> ConsumeNodeAsUniquePtr (FuzzedDataProvider& fdp, const std::optional<NodeId>& node_id_in = nullopt ) { return ConsumeNode<true >(fdp, node_id_in); }
318318
319+ inline void FillNode (FuzzedDataProvider& fuzzed_data_provider, CNode& node, const std::optional<int32_t >& version_in = std::nullopt ) noexcept
320+ {
321+ const ServiceFlags remote_services = ConsumeWeakEnum (fuzzed_data_provider, ALL_SERVICE_FLAGS);
322+ const NetPermissionFlags permission_flags = ConsumeWeakEnum (fuzzed_data_provider, ALL_NET_PERMISSION_FLAGS);
323+ const int32_t version = version_in.value_or (fuzzed_data_provider.ConsumeIntegral <int32_t >());
324+ const bool filter_txs = fuzzed_data_provider.ConsumeBool ();
325+
326+ node.nServices = remote_services;
327+ node.m_permissionFlags = permission_flags;
328+ node.nVersion = version;
329+ node.SetCommonVersion (version);
330+ if (node.m_tx_relay != nullptr ) {
331+ LOCK (node.m_tx_relay ->cs_filter );
332+ node.m_tx_relay ->fRelayTxes = filter_txs;
333+ }
334+ }
335+
319336inline void InitializeFuzzingContext (const std::string& chain_name = CBaseChainParams::REGTEST)
320337{
321338 static const BasicTestingSetup basic_testing_setup{chain_name, {" -nodebuglogfile" }};
0 commit comments