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

Unified Diff: net/udp/fuzzed_datagram_client_socket.h

Issue 1946793002: net: Add fuzzer for HostResolverImpl. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove port 0 check 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
« no previous file with comments | « net/socket/socks_client_socket_fuzzer.cc ('k') | net/udp/fuzzed_datagram_client_socket.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/udp/fuzzed_datagram_client_socket.h
diff --git a/net/udp/fuzzed_datagram_client_socket.h b/net/udp/fuzzed_datagram_client_socket.h
new file mode 100644
index 0000000000000000000000000000000000000000..b92b39cba2fab311c64152fdfc0a433c89f73a59
--- /dev/null
+++ b/net/udp/fuzzed_datagram_client_socket.h
@@ -0,0 +1,76 @@
+// 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.
+
+#ifndef NET_UDP_FUZZED_DATAGRAM_CLIENT_SOCKET_H_
+#define NET_UDP_FUZZED_DATAGRAM_CLIENT_SOCKET_H_
+
+#include "net/udp/datagram_client_socket.h"
+
+#include <stdint.h>
+
+#include "base/memory/weak_ptr.h"
+#include "net/base/completion_callback.h"
+#include "net/base/ip_endpoint.h"
+#include "net/base/network_change_notifier.h"
+#include "net/log/net_log.h"
+
+namespace net {
+
+class FuzzedDataProvider;
+class IOBuffer;
+
+// Datagram ClientSocket implementation for use with fuzzers. Can fail to
+// connect, reads and writes can succeed or fail synchronously or
+// asynchronously. Successful reads return random data.
+class FuzzedDatagramClientSocket : public DatagramClientSocket {
+ public:
+ // |data_provider| must outlive the created socket.
+ explicit FuzzedDatagramClientSocket(FuzzedDataProvider* data_provider);
+ ~FuzzedDatagramClientSocket() override;
+
+ // DatagramClientSocket implementation:
+ int Connect(const IPEndPoint& address) override;
+ int ConnectUsingNetwork(NetworkChangeNotifier::NetworkHandle network,
+ const IPEndPoint& address) override;
+ int ConnectUsingDefaultNetwork(const IPEndPoint& address) override;
+ NetworkChangeNotifier::NetworkHandle GetBoundNetwork() const override;
+
+ // DatagramSocket implementation:
+ void Close() override;
+ int GetPeerAddress(IPEndPoint* address) const override;
+ int GetLocalAddress(IPEndPoint* address) const override;
+ const BoundNetLog& NetLog() const override;
+
+ // Socket implementation:
+ int Read(IOBuffer* buf,
+ int buf_len,
+ const CompletionCallback& callback) override;
+ int Write(IOBuffer* buf,
+ int buf_len,
+ const CompletionCallback& callback) override;
+ int SetReceiveBufferSize(int32_t size) override;
+ int SetSendBufferSize(int32_t size) override;
+
+ private:
+ void OnReadComplete(const net::CompletionCallback& callback, int result);
+ void OnWriteComplete(const net::CompletionCallback& callback, int result);
+
+ FuzzedDataProvider* data_provider_;
+
+ bool connected_ = false;
+ bool read_pending_ = false;
+ bool write_pending_ = false;
+
+ BoundNetLog net_log_;
+
+ IPEndPoint remote_address_;
+
+ base::WeakPtrFactory<FuzzedDatagramClientSocket> weak_factory_;
+
+ DISALLOW_COPY_AND_ASSIGN(FuzzedDatagramClientSocket);
+};
+
+} // namespace net
+
+#endif // NET_UDP_FUZZED_DATAGRAM_CLIENT_SOCKET_H_
« no previous file with comments | « net/socket/socks_client_socket_fuzzer.cc ('k') | net/udp/fuzzed_datagram_client_socket.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698