MCPcopy Create free account
hub / github.com/ElementsProject/elements / FillNode

Function FillNode

src/test/fuzz/util.cpp:222–274  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

220}
221
222void FillNode(FuzzedDataProvider& fuzzed_data_provider, ConnmanTestMsg& connman, PeerManager& peerman, CNode& node) noexcept
223{
224 const bool successfully_connected{fuzzed_data_provider.ConsumeBool()};
225 const ServiceFlags remote_services = ConsumeWeakEnum(fuzzed_data_provider, ALL_SERVICE_FLAGS);
226 const NetPermissionFlags permission_flags = ConsumeWeakEnum(fuzzed_data_provider, ALL_NET_PERMISSION_FLAGS);
227 const int32_t version = fuzzed_data_provider.ConsumeIntegralInRange<int32_t>(MIN_PEER_PROTO_VERSION, std::numeric_limits<int32_t>::max());
228 const bool filter_txs = fuzzed_data_provider.ConsumeBool();
229
230 const CNetMsgMaker mm{0};
231
232 CSerializedNetMsg msg_version{
233 mm.Make(NetMsgType::VERSION,
234 version, //
235 Using<CustomUintFormatter<8>>(remote_services), //
236 int64_t{}, // dummy time
237 int64_t{}, // ignored service bits
238 CService{}, // dummy
239 int64_t{}, // ignored service bits
240 CService{}, // ignored
241 uint64_t{1}, // dummy nonce
242 std::string{}, // dummy subver
243 int32_t{}, // dummy starting_height
244 filter_txs),
245 };
246
247 {
248 LOCK(node.cs_sendProcessing);
249 peerman.SendMessages(&node);
250 }
251 (void)connman.ReceiveMsgFrom(node, msg_version);
252 node.fPauseSend = false;
253 connman.ProcessMessagesOnce(node);
254 if (node.fDisconnect) return;
255 assert(node.nVersion == version);
256 assert(node.GetCommonVersion() == std::min(version, PROTOCOL_VERSION));
257 assert(node.nServices == remote_services);
258 if (node.m_tx_relay != nullptr) {
259 LOCK(node.m_tx_relay->cs_filter);
260 assert(node.m_tx_relay->fRelayTxes == filter_txs);
261 }
262 node.m_permissionFlags = permission_flags;
263 if (successfully_connected) {
264 CSerializedNetMsg msg_verack{mm.Make(NetMsgType::VERACK)};
265 (void)connman.ReceiveMsgFrom(node, msg_verack);
266 node.fPauseSend = false;
267 connman.ProcessMessagesOnce(node);
268 {
269 LOCK(node.cs_sendProcessing);
270 peerman.SendMessages(&node);
271 }
272 assert(node.fSuccessfullyConnected == true);
273 }
274}
275
276CAmount ConsumeMoney(FuzzedDataProvider& fuzzed_data_provider, const std::optional<CAmount>& max) noexcept
277{

Callers 2

fuzz_targetFunction · 0.85
FUZZ_TARGET_INITFunction · 0.85

Calls 7

ConsumeWeakEnumFunction · 0.85
ConsumeBoolMethod · 0.80
SendMessagesMethod · 0.80
ReceiveMsgFromMethod · 0.80
ProcessMessagesOnceMethod · 0.80
GetCommonVersionMethod · 0.80
MakeMethod · 0.45

Tested by

no test coverage detected