| 220 | } |
| 221 | |
| 222 | void 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 | |
| 276 | CAmount ConsumeMoney(FuzzedDataProvider& fuzzed_data_provider, const std::optional<CAmount>& max) noexcept |
| 277 | { |
no test coverage detected