| // Copyright 2019 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <base/logging.h> |
| #include <fuzzer/FuzzedDataProvider.h> |
| #include <stddef.h> |
| #include <stdint.h> |
| |
| #include "vpn-manager/service_manager.h" |
| |
| namespace vpn_manager { |
| |
| class Environment { |
| public: |
| Environment() { logging::SetMinLogLevel(logging::LOG_FATAL); } |
| }; |
| |
| namespace { |
| |
| extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { |
| static Environment env; |
| FuzzedDataProvider data_provider(data, size); |
| struct sockaddr_storage addr; |
| const int max_ipstring_len = |
| 40; // ipv6 is 4 hex * 8 groups, 7 colons = 39 + 1 random byte so that |
| // it's sometimes beyond max size |
| bool converted; |
| std::string addr_string; |
| |
| converted = ServiceManager::ConvertIPStringToSockAddr( |
| data_provider.ConsumeRandomLengthString(max_ipstring_len), &addr); |
| |
| if (converted) |
| ServiceManager::ConvertSockAddrToIPString(addr, &addr_string); |
| |
| return 0; |
| } |
| } // namespace |
| } // namespace vpn_manager |