|
12 | 12 | #include <string> |
13 | 13 | #include <vector> |
14 | 14 |
|
15 | | -namespace { |
16 | | -FuzzedDataProvider* fuzzed_data_provider_ptr = nullptr; |
17 | | - |
18 | | -std::vector<CNetAddr> fuzzed_dns_lookup_function(const std::string& name, bool allow_lookup) |
19 | | -{ |
20 | | - std::vector<CNetAddr> resolved_addresses; |
21 | | - while (fuzzed_data_provider_ptr->ConsumeBool()) { |
22 | | - resolved_addresses.push_back(ConsumeNetAddr(*fuzzed_data_provider_ptr)); |
23 | | - } |
24 | | - return resolved_addresses; |
25 | | -} |
26 | | -} // namespace |
27 | | - |
28 | 15 | FUZZ_TARGET(netbase_dns_lookup) |
29 | 16 | { |
30 | 17 | FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()}; |
31 | | - fuzzed_data_provider_ptr = &fuzzed_data_provider; |
32 | 18 | const std::string name = fuzzed_data_provider.ConsumeRandomLengthString(512); |
33 | 19 | const unsigned int max_results = fuzzed_data_provider.ConsumeIntegral<unsigned int>(); |
34 | 20 | const bool allow_lookup = fuzzed_data_provider.ConsumeBool(); |
35 | 21 | const int default_port = fuzzed_data_provider.ConsumeIntegral<int>(); |
| 22 | + |
| 23 | + auto fuzzed_dns_lookup_function = [&](const std::string&, bool) { |
| 24 | + std::vector<CNetAddr> resolved_addresses; |
| 25 | + while (fuzzed_data_provider.ConsumeBool()) { |
| 26 | + resolved_addresses.push_back(ConsumeNetAddr(fuzzed_data_provider)); |
| 27 | + } |
| 28 | + return resolved_addresses; |
| 29 | + }; |
| 30 | + |
36 | 31 | { |
37 | 32 | std::vector<CNetAddr> resolved_addresses; |
38 | 33 | if (LookupHost(name, resolved_addresses, max_results, allow_lookup, fuzzed_dns_lookup_function)) { |
@@ -73,5 +68,4 @@ FUZZ_TARGET(netbase_dns_lookup) |
73 | 68 | assert(resolved_subnet.IsValid()); |
74 | 69 | } |
75 | 70 | } |
76 | | - fuzzed_data_provider_ptr = nullptr; |
77 | 71 | } |
0 commit comments