/*
 *  Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */
#include "webrtc/base/checks.h"
#include "webrtc/modules/rtp_rtcp/source/rtcp_receiver.h"
#include "webrtc/system_wrappers/include/clock.h"

namespace webrtc {
namespace {

class NullModuleRtpRtcp : public RTCPReceiver::ModuleRtpRtcp {
 public:
  void SetTmmbn(std::vector<rtcp::TmmbItem>) override {}
  void OnRequestSendReport() override {}
  void OnReceivedNack(const std::vector<uint16_t>&) override {};
  void OnReceivedRtcpReportBlocks(const ReportBlockList&) override {};
};

}

void FuzzOneInput(const uint8_t* data, size_t size) {
  NullModuleRtpRtcp rtp_rtcp_module;
  SimulatedClock clock(1234);

  RTCPReceiver receiver(&clock, false, nullptr, nullptr, nullptr, nullptr,
                        &rtp_rtcp_module);

  receiver.IncomingPacket(data, size);
}
}  // namespace webrtc


/*
 *  Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
 *
 *  Use of this source code is governed by a BSD-style license
 *  that can be found in the LICENSE file in the root of the source
 *  tree. An additional intellectual property rights grant can be found
 *  in the file PATENTS.  All contributing project authors may
 *  be found in the AUTHORS file in the root of the source tree.
 */
#include "webrtc/base/checks.h"
#include "webrtc/modules/rtp_rtcp/source/rtcp_receiver.h"
#include "webrtc/system_wrappers/include/clock.h"

namespace webrtc {

void FuzzOneInput(const uint8_t* data, size_t size) {
  RTCPUtility::RTCPParserV2 rtcp_parser(data, size, true);
  if (!rtcp_parser.IsValid())
    return;

  webrtc::SimulatedClock clock(1234);
  RTCPReceiver receiver(&clock, false, nullptr, nullptr, nullptr, nullptr,
                        nullptr);

  RTCPHelp::RTCPPacketInformation rtcp_packet_information;
  receiver.IncomingRTCPPacket(rtcp_packet_information, &rtcp_parser);
}
}  // namespace webrtc


--- 
+++ 
@@ -12,18 +12,26 @@
 #include "webrtc/system_wrappers/include/clock.h"
 
 namespace webrtc {
+namespace {
+
+class NullModuleRtpRtcp : public RTCPReceiver::ModuleRtpRtcp {
+ public:
+  void SetTmmbn(std::vector<rtcp::TmmbItem>) override {}
+  void OnRequestSendReport() override {}
+  void OnReceivedNack(const std::vector<uint16_t>&) override {};
+  void OnReceivedRtcpReportBlocks(const ReportBlockList&) override {};
+};
+
+}
 
 void FuzzOneInput(const uint8_t* data, size_t size) {
-  RTCPUtility::RTCPParserV2 rtcp_parser(data, size, true);
-  if (!rtcp_parser.IsValid())
-    return;
+  NullModuleRtpRtcp rtp_rtcp_module;
+  SimulatedClock clock(1234);
 
-  webrtc::SimulatedClock clock(1234);
   RTCPReceiver receiver(&clock, false, nullptr, nullptr, nullptr, nullptr,
-                        nullptr);
+                        &rtp_rtcp_module);
 
-  RTCPHelp::RTCPPacketInformation rtcp_packet_information;
-  receiver.IncomingRTCPPacket(rtcp_packet_information, &rtcp_parser);
+  receiver.IncomingPacket(data, size);
 }
 }  // namespace webrtc
 
Update rtcp receiver fuzzer to use generic function
IncomingPacket(const uint8_t* packet, size_t size)
instead of implementation specific
IncomingRTCPPacket(PacketInfo* out, Parser* in)
This would allow switch parse implementation

BUG=webrtc:5260
R=stefan@webrtc.org

Review URL: https://codereview.webrtc.org/2334643002 .

Cr-Commit-Position: 972c6d2dc6dd5efdad1377c0d224e03eb8f276f7@{#14195}
