Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Unified Diff: net/dns/dns_socket_pool.cc

Issue 1946793002: net: Add fuzzer for HostResolverImpl. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: merge, fix build Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: net/dns/dns_socket_pool.cc
diff --git a/net/dns/dns_socket_pool.cc b/net/dns/dns_socket_pool.cc
index d1f32a24c3d5fecb19aee9dbad00a2fa3fd5d0eb..e29f0b10866e6824b1ee0c20f5922be096d197c7 100644
--- a/net/dns/dns_socket_pool.cc
+++ b/net/dns/dns_socket_pool.cc
@@ -11,7 +11,6 @@
#include "net/base/address_list.h"
#include "net/base/ip_endpoint.h"
#include "net/base/net_errors.h"
-#include "net/base/rand_callback.h"
#include "net/socket/client_socket_factory.h"
#include "net/socket/stream_socket.h"
#include "net/udp/datagram_client_socket.h"
@@ -39,12 +38,13 @@ const unsigned kAllocateMinSize = 1;
} // namespace
-DnsSocketPool::DnsSocketPool(ClientSocketFactory* socket_factory)
+DnsSocketPool::DnsSocketPool(ClientSocketFactory* socket_factory,
+ const RandIntCallback& rand_int_callback)
: socket_factory_(socket_factory),
+ rand_int_callback_(rand_int_callback),
net_log_(NULL),
nameservers_(NULL),
- initialized_(false) {
-}
+ initialized_(false) {}
void DnsSocketPool::InitializeInternal(
const std::vector<IPEndPoint>* nameservers,
@@ -75,16 +75,16 @@ std::unique_ptr<DatagramClientSocket> DnsSocketPool::CreateConnectedSocket(
NetLog::Source no_source;
socket = socket_factory_->CreateDatagramClientSocket(
- kBindType, base::Bind(&base::RandInt), net_log_, no_source);
+ kBindType, rand_int_callback_, net_log_, no_source);
if (socket.get()) {
int rv = socket->Connect((*nameservers_)[server_index]);
if (rv != OK) {
- VLOG(1) << "Failed to connect socket: " << rv;
+ DVLOG(1) << "Failed to connect socket: " << rv;
socket.reset();
}
} else {
- LOG(WARNING) << "Failed to create socket.";
+ DVLOG(1) << "Failed to create socket.";
}
return socket;
@@ -92,9 +92,9 @@ std::unique_ptr<DatagramClientSocket> DnsSocketPool::CreateConnectedSocket(
class NullDnsSocketPool : public DnsSocketPool {
public:
- NullDnsSocketPool(ClientSocketFactory* factory)
- : DnsSocketPool(factory) {
- }
+ NullDnsSocketPool(ClientSocketFactory* factory,
+ const RandIntCallback& rand_int_callback)
+ : DnsSocketPool(factory, rand_int_callback) {}
void Initialize(const std::vector<IPEndPoint>* nameservers,
NetLog* net_log) override {
@@ -115,15 +115,17 @@ class NullDnsSocketPool : public DnsSocketPool {
// static
std::unique_ptr<DnsSocketPool> DnsSocketPool::CreateNull(
- ClientSocketFactory* factory) {
- return std::unique_ptr<DnsSocketPool>(new NullDnsSocketPool(factory));
+ ClientSocketFactory* factory,
+ const RandIntCallback& rand_int_callback) {
+ return std::unique_ptr<DnsSocketPool>(
+ new NullDnsSocketPool(factory, rand_int_callback));
}
class DefaultDnsSocketPool : public DnsSocketPool {
public:
- DefaultDnsSocketPool(ClientSocketFactory* factory)
- : DnsSocketPool(factory) {
- };
+ DefaultDnsSocketPool(ClientSocketFactory* factory,
+ const RandIntCallback& rand_int_callback)
+ : DnsSocketPool(factory, rand_int_callback){};
~DefaultDnsSocketPool() override;
@@ -148,8 +150,10 @@ class DefaultDnsSocketPool : public DnsSocketPool {
// static
std::unique_ptr<DnsSocketPool> DnsSocketPool::CreateDefault(
- ClientSocketFactory* factory) {
- return std::unique_ptr<DnsSocketPool>(new DefaultDnsSocketPool(factory));
+ ClientSocketFactory* factory,
+ const RandIntCallback& rand_int_callback) {
+ return std::unique_ptr<DnsSocketPool>(
+ new DefaultDnsSocketPool(factory, rand_int_callback));
}
void DefaultDnsSocketPool::Initialize(
@@ -179,17 +183,17 @@ std::unique_ptr<DatagramClientSocket> DefaultDnsSocketPool::AllocateSocket(
FillPool(server_index, kAllocateMinSize);
if (pool.size() == 0) {
- LOG(WARNING) << "No DNS sockets available in pool " << server_index << "!";
+ DVLOG(1) << "No DNS sockets available in pool " << server_index << "!";
return std::unique_ptr<DatagramClientSocket>();
}
if (pool.size() < kAllocateMinSize) {
- LOG(WARNING) << "Low DNS port entropy: wanted " << kAllocateMinSize
- << " sockets to choose from, but only have " << pool.size()
- << " in pool " << server_index << ".";
+ DVLOG(1) << "Low DNS port entropy: wanted " << kAllocateMinSize
+ << " sockets to choose from, but only have " << pool.size()
+ << " in pool " << server_index << ".";
}
- unsigned socket_index = base::RandInt(0, pool.size() - 1);
+ unsigned socket_index = rand_int_callback().Run(0, pool.size() - 1);
eroman 2016/06/01 01:47:21 Rather than exposing the callback , how about expo
mmenke 2016/06/01 21:21:51 Done. Agree it's a bit nicer, though since we're
DatagramClientSocket* socket = pool[socket_index];
pool[socket_index] = pool.back();
pool.pop_back();

Powered by Google App Engine
This is Rietveld 408576698