pkasting@chromium.org
2014-11-20 22:28:14 +00:00
parent edc6e57a92
commit 4591fbd09f
341 changed files with 2610 additions and 2613 deletions

View File

@ -12,6 +12,7 @@
#include <assert.h>
#include <stdio.h>
#include <limits>
#include "webrtc/system_wrappers/interface/critical_section_wrapper.h"
#include "webrtc/system_wrappers/interface/logging.h"
@ -145,7 +146,7 @@ bool RtpDumpImpl::IsActive() const
return _file.Open();
}
int32_t RtpDumpImpl::DumpPacket(const uint8_t* packet, uint16_t packetLength)
int32_t RtpDumpImpl::DumpPacket(const uint8_t* packet, size_t packetLength)
{
CriticalSectionScoped lock(_critSect);
if (!IsActive())
@ -158,7 +159,9 @@ int32_t RtpDumpImpl::DumpPacket(const uint8_t* packet, uint16_t packetLength)
return -1;
}
if (packetLength < 1)
rtpDumpPktHdr_t hdr;
size_t total_size = packetLength + sizeof hdr;
if (packetLength < 1 || total_size > std::numeric_limits<uint16_t>::max())
{
return -1;
}
@ -167,11 +170,8 @@ int32_t RtpDumpImpl::DumpPacket(const uint8_t* packet, uint16_t packetLength)
// considered RTP (without further verification).
bool isRTCP = RTCP(packet);
rtpDumpPktHdr_t hdr;
uint32_t offset;
// Offset is relative to when recording was started.
offset = GetTimeInMS();
uint32_t offset = GetTimeInMS();
if (offset < _startTime)
{
// Compensate for wraparound.
@ -181,7 +181,7 @@ int32_t RtpDumpImpl::DumpPacket(const uint8_t* packet, uint16_t packetLength)
}
hdr.offset = RtpDumpHtonl(offset);
hdr.length = RtpDumpHtons((uint16_t)(packetLength + sizeof(hdr)));
hdr.length = RtpDumpHtons((uint16_t)(total_size));
if (isRTCP)
{
hdr.plen = 0;