From 50da1d329a050f191b87cc2463ea9381d847eb2c Mon Sep 17 00:00:00 2001 From: danilchap Date: Thu, 10 Mar 2016 13:13:52 -0800 Subject: [PATCH] Fixed busy loop in case of partially malformed rtcp packet BUG=webrtc:5574 Review URL: https://codereview.webrtc.org/1726573003 Cr-Commit-Position: refs/heads/master@{#11946} --- webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc | 7 +++++++ webrtc/modules/rtp_rtcp/source/rtcp_utility.cc | 1 + 2 files changed, 8 insertions(+) diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc b/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc index 252b4828ab..c43bb0e32a 100644 --- a/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc +++ b/webrtc/modules/rtp_rtcp/source/rtcp_receiver_unittest.cc @@ -157,6 +157,13 @@ TEST_F(RtcpReceiverTest, BrokenPacketIsIgnored) { EXPECT_EQ(0U, rtcp_packet_info_.rtcpPacketTypeFlags); } +TEST_F(RtcpReceiverTest, InvalidFeedbackPacketIsIgnored) { + // Too short feedback packet. + const uint8_t bad_packet[] = {0x80, RTCPUtility::PT_RTPFB, 0, 0}; + EXPECT_EQ(0, InjectRtcpPacket(bad_packet, sizeof(bad_packet))); + EXPECT_EQ(0U, rtcp_packet_info_.rtcpPacketTypeFlags); +} + TEST_F(RtcpReceiverTest, InjectSrPacket) { const uint32_t kSenderSsrc = 0x10203; rtcp::SenderReport sr; diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_utility.cc b/webrtc/modules/rtp_rtcp/source/rtcp_utility.cc index e19499612d..63693fa9c2 100644 --- a/webrtc/modules/rtp_rtcp/source/rtcp_utility.cc +++ b/webrtc/modules/rtp_rtcp/source/rtcp_utility.cc @@ -230,6 +230,7 @@ RTCPUtility::RTCPParserV2::IterateTopLevel() { if (!ParseFBCommon(header)) { // Nothing supported found, continue to next block! + EndCurrentBlock(); break; } return;