1 /*
2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11 #include <stddef.h>
12 #include <stdint.h>
13
14 #include "p2p/base/pseudo_tcp.h"
15 #include "rtc_base/thread.h"
16
17 namespace webrtc {
18 class FakeIPseudoTcpNotify : public cricket::IPseudoTcpNotify {
19 public:
OnTcpOpen(cricket::PseudoTcp * tcp)20 void OnTcpOpen(cricket::PseudoTcp* tcp) {}
OnTcpReadable(cricket::PseudoTcp * tcp)21 void OnTcpReadable(cricket::PseudoTcp* tcp) {}
OnTcpWriteable(cricket::PseudoTcp * tcp)22 void OnTcpWriteable(cricket::PseudoTcp* tcp) {}
OnTcpClosed(cricket::PseudoTcp * tcp,uint32_t error)23 void OnTcpClosed(cricket::PseudoTcp* tcp, uint32_t error) {}
24
TcpWritePacket(cricket::PseudoTcp * tcp,const char * buffer,size_t len)25 cricket::IPseudoTcpNotify::WriteResult TcpWritePacket(cricket::PseudoTcp* tcp,
26 const char* buffer,
27 size_t len) {
28 return cricket::IPseudoTcpNotify::WriteResult::WR_SUCCESS;
29 }
30 };
31
32 struct Environment {
Environmentwebrtc::Environment33 explicit Environment(cricket::IPseudoTcpNotify* notifier)
34 : ptcp(notifier, 0) {}
35
36 // We need the thread to avoid some uninteresting crashes, since the
37 // production code expects there to be a thread object available.
38 rtc::AutoThread thread;
39 cricket::PseudoTcp ptcp;
40 };
41
42 Environment* env = new Environment(new FakeIPseudoTcpNotify());
43
FuzzOneInput(const uint8_t * data,size_t size)44 void FuzzOneInput(const uint8_t* data, size_t size) {
45 env->ptcp.NotifyPacket(reinterpret_cast<const char*>(data), size);
46 }
47 } // namespace webrtc
48