@@ -296,7 +296,7 @@ inline CAddress ConsumeAddress(FuzzedDataProvider& fuzzed_data_provider) noexcep
296
296
}
297
297
298
298
template <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
300
300
{
301
301
const NodeId node_id = node_id_in.value_or (fuzzed_data_provider.ConsumeIntegral <NodeId>());
302
302
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
316
316
}
317
317
inline std::unique_ptr<CNode> ConsumeNodeAsUniquePtr (FuzzedDataProvider& fdp, const std::optional<NodeId>& node_id_in = nullopt) { return ConsumeNode<true >(fdp, node_id_in); }
318
318
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
+
319
336
inline void InitializeFuzzingContext (const std::string& chain_name = CBaseChainParams::REGTEST)
320
337
{
321
338
static const BasicTestingSetup basic_testing_setup{chain_name, {" -nodebuglogfile" }};
0 commit comments