| // Copyright 2016 The Chromium 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 <functional> |
| |
| #include "net/base/address_list.h" |
| #include "net/base/ip_address.h" |
| #include "starboard/types.h" |
| |
| // Entry point for LibFuzzer. |
| extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { |
| const base::StringPiece hostname(reinterpret_cast<const char*>(data), size); |
| net::IPAddress address; |
| |
| if (net::ParseURLHostnameToAddress(hostname, &address)) { |
| // To fuzz port number without spending raw bytes of data, use hash(data). |
| std::size_t data_hash = std::hash<std::string>()(hostname.as_string()); |
| uint16_t port = static_cast<uint16_t>(data_hash & 0xFFFF); |
| net::AddressList addresses = |
| net::AddressList::CreateFromIPAddress(address, port); |
| |
| for (const auto& endpoint : addresses) { |
| endpoint.ToString(); |
| } |
| } |
| |
| return 0; |
| } |