| 486 | } |
| 487 | |
| 488 | CNetAddr ConsumeNetAddr(FuzzedDataProvider& fuzzed_data_provider) noexcept |
| 489 | { |
| 490 | const Network network = fuzzed_data_provider.PickValueInArray({Network::NET_IPV4, Network::NET_IPV6, Network::NET_INTERNAL, Network::NET_ONION}); |
| 491 | CNetAddr net_addr; |
| 492 | if (network == Network::NET_IPV4) { |
| 493 | in_addr v4_addr = {}; |
| 494 | v4_addr.s_addr = fuzzed_data_provider.ConsumeIntegral<uint32_t>(); |
| 495 | net_addr = CNetAddr{v4_addr}; |
| 496 | } else if (network == Network::NET_IPV6) { |
| 497 | if (fuzzed_data_provider.remaining_bytes() >= 16) { |
| 498 | in6_addr v6_addr = {}; |
| 499 | memcpy(v6_addr.s6_addr, fuzzed_data_provider.ConsumeBytes<uint8_t>(16).data(), 16); |
| 500 | net_addr = CNetAddr{v6_addr, fuzzed_data_provider.ConsumeIntegral<uint32_t>()}; |
| 501 | } |
| 502 | } else if (network == Network::NET_INTERNAL) { |
| 503 | net_addr.SetInternal(fuzzed_data_provider.ConsumeBytesAsString(32)); |
| 504 | } else if (network == Network::NET_ONION) { |
| 505 | net_addr.SetSpecial(fuzzed_data_provider.ConsumeBytesAsString(32)); |
| 506 | } |
| 507 | return net_addr; |
| 508 | } |
| 509 | |
| 510 | FILE* FuzzedFileProvider::open() |
| 511 | { |
no test coverage detected