Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include <stddef.h> | |
| 6 #include <stdint.h> | |
| 7 | |
| 8 #include <functional> | |
| 9 | |
| 10 #include "base/values.h" | |
| 11 #include "net/base/address_list.h" | |
| 12 #include "net/base/ip_address.h" | |
| 13 | |
| 14 // Entry point for LibFuzzer. | |
| 15 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { | |
| 16 const base::StringPiece hostname(reinterpret_cast<const char*>(data), size); | |
| 17 net::IPAddress address; | |
| 18 | |
| 19 if (net::ParseURLHostnameToAddress(hostname, &address)) { | |
| 20 // To fuzz port number without spending raw bytes of data, use hash(data). | |
| 21 std::size_t data_hash = std::hash<std::string>()(hostname.as_string()); | |
| 22 uint16_t port = static_cast<uint16_t>(data_hash & 0xFFFF); | |
| 23 net::AddressList addresses = | |
| 24 net::AddressList::CreateFromIPAddress(address, port); | |
| 25 | |
| 26 base::ListValue endpoints; | |
|
aizatsky
2016/08/31 18:15:40
I meant it even like this:
...
for (const aut
eroman
2016/08/31 18:23:50
+1
Is your concern is that the compiler will be s
eroman
2016/08/31 18:28:33
(FWIW I agree that calling ToStringWithPort() is a
mmoroz
2016/09/01 10:46:21
Ah, sorry for misunderstanding from my side! Looks
| |
| 27 for (const auto& endpoint : addresses) { | |
| 28 endpoints.AppendString(endpoint.ToStringWithoutPort()); | |
| 29 } | |
| 30 | |
| 31 std::string result; | |
| 32 for (size_t i = 0; i != endpoints.GetSize(); ++i) { | |
| 33 endpoints.GetString(i, &result); | |
| 34 } | |
| 35 } | |
| 36 | |
| 37 return 0; | |
| 38 } | |
| OLD | NEW |