From 259073bf8266eb22f051ebc37715f06d0679456e Mon Sep 17 00:00:00 2001 From: Zhi Huang Date: Tue, 3 Apr 2018 18:15:36 -0700 Subject: [PATCH] Filter out the non-RTP packet in RtpTransport. Bug: b/77547687 Change-Id: Id13b4f918208b76040bfbef1ec771f2a42831519 Reviewed-on: https://webrtc-review.googlesource.com/66602 Commit-Queue: Zhi Huang Reviewed-by: Steve Anton Cr-Commit-Position: refs/heads/master@{#22714} --- pc/rtptransport.cc | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/pc/rtptransport.cc b/pc/rtptransport.cc index cab04e5f50..ce6996c6ad 100644 --- a/pc/rtptransport.cc +++ b/pc/rtptransport.cc @@ -230,6 +230,11 @@ void RtpTransport::OnReadPacket(rtc::PacketTransportInternal* transport, int flags) { TRACE_EVENT0("webrtc", "RtpTransport::OnReadPacket"); + if (!cricket::IsRtpPacket(data, len) && + !IsRtcp(data, static_cast(len))) { + return; + } + // When using RTCP multiplexing we might get RTCP packets on the RTP // transport. We check the RTP payload type to determine if it is RTCP. bool rtcp = transport == rtcp_packet_transport() || @@ -239,6 +244,7 @@ void RtpTransport::OnReadPacket(rtc::PacketTransportInternal* transport, if (!WantsPacket(rtcp, &packet)) { return; } + // This mutates |packet| if it is protected. SignalPacketReceived(rtcp, &packet, packet_time); }