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 |