Fix off-by-one error in DCHECK in ProducerFec.

BUG=chromium:642743

Review-Url: https://codereview.webrtc.org/2294243005
Cr-Commit-Position: refs/heads/master@{#14018}
This commit is contained in:
brandtr 2016-09-01 05:01:56 -07:00 committed by Commit bot
parent e8a6697a5e
commit 624c33578f
2 changed files with 19 additions and 1 deletions

View File

@ -57,7 +57,7 @@ void RedPacket::CreateHeader(const uint8_t* rtp_header,
size_t header_length,
int red_payload_type,
int payload_type) {
RTC_DCHECK_LT(header_length + kRedForFecHeaderLength, length_);
RTC_DCHECK_LE(header_length + kRedForFecHeaderLength, length_);
memcpy(data_.get(), rtp_header, header_length);
// Replace payload type.
data_[1] &= 0x80;

View File

@ -185,4 +185,22 @@ TEST_F(ProducerFecTest, BuildRedPacket) {
delete packet;
}
TEST_F(ProducerFecTest, BuildRedPacketWithEmptyPayload) {
constexpr size_t kNumFrames = 1;
constexpr size_t kPayloadLength = 0;
constexpr size_t kRedForFecHeaderLength = 1;
generator_.NewFrame(kNumFrames);
std::unique_ptr<test::RawRtpPacket> packet(
generator_.NextPacket(0, kPayloadLength));
std::unique_ptr<RedPacket> red_packet =
ProducerFec::BuildRedPacket(packet->data, packet->length - kRtpHeaderSize,
kRtpHeaderSize, kRedPayloadType);
EXPECT_EQ(packet->length + kRedForFecHeaderLength, red_packet->length());
VerifyHeader(packet->header.header.sequenceNumber,
packet->header.header.timestamp, kRedPayloadType,
packet->header.header.payloadType, red_packet.get(),
true); // Marker bit set.
}
} // namespace webrtc