| 26 | } |
| 27 | |
| 28 | FUZZ_TARGET_INIT(socks5, initialize_socks5) |
| 29 | { |
| 30 | FuzzedDataProvider fuzzed_data_provider{buffer.data(), buffer.size()}; |
| 31 | ProxyCredentials proxy_credentials; |
| 32 | proxy_credentials.username = fuzzed_data_provider.ConsumeRandomLengthString(512); |
| 33 | proxy_credentials.password = fuzzed_data_provider.ConsumeRandomLengthString(512); |
| 34 | InterruptSocks5(fuzzed_data_provider.ConsumeBool()); |
| 35 | // Set FUZZED_SOCKET_FAKE_LATENCY=1 to exercise recv timeout code paths. This |
| 36 | // will slow down fuzzing. |
| 37 | g_socks5_recv_timeout = (fuzzed_data_provider.ConsumeBool() && std::getenv("FUZZED_SOCKET_FAKE_LATENCY") != nullptr) ? 1 : default_socks5_recv_timeout; |
| 38 | FuzzedSock fuzzed_sock = ConsumeSock(fuzzed_data_provider); |
| 39 | // This Socks5(...) fuzzing harness would have caught CVE-2017-18350 within |
| 40 | // a few seconds of fuzzing. |
| 41 | (void)Socks5(fuzzed_data_provider.ConsumeRandomLengthString(512), |
| 42 | fuzzed_data_provider.ConsumeIntegral<uint16_t>(), |
| 43 | fuzzed_data_provider.ConsumeBool() ? &proxy_credentials : nullptr, |
| 44 | fuzzed_sock); |
| 45 | } |
nothing calls this directly
no test coverage detected