Protect against assigning current_offset_ negative value.

Bug: webrtc:11176
Change-Id: Ic3937da6f1ee9cd118372693cb71d70beb43159c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/161329
Commit-Queue: Sebastian Jansson <srte@webrtc.org>
Reviewed-by: Sebastian Jansson <srte@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30096}
This commit is contained in:
Raman Budny 2019-12-09 08:29:53 +00:00 committed by Commit Bot
parent cebdbf650d
commit 5331079132
2 changed files with 11 additions and 4 deletions

View File

@ -220,8 +220,15 @@ TransportFeedbackAdapter::ProcessTransportFeedbackInner(
current_offset_ = feedback_time;
} else {
// TODO(srte): We shouldn't need to do rounding here.
current_offset_ += feedback.GetBaseDelta(last_timestamp_)
.RoundDownTo(TimeDelta::Millis<1>());
const TimeDelta delta = feedback.GetBaseDelta(last_timestamp_)
.RoundDownTo(TimeDelta::Millis<1>());
// Protect against assigning current_offset_ negative value.
if (delta < Timestamp::Zero() - current_offset_) {
RTC_LOG(LS_WARNING) << "Unexpected feedback timestamp received.";
current_offset_ = feedback_time;
} else {
current_offset_ += delta;
}
}
last_timestamp_ = feedback.GetBaseTime();

View File

@ -284,9 +284,9 @@ TEST_F(TransportFeedbackAdapterTest, SendTimeWrapsBothWays) {
static_cast<int64_t>((1 << 23) - 1) / 1000;
std::vector<PacketResult> packets;
packets.push_back(
CreatePacket(kHighArrivalTimeMs - 64, 200, 0, 1500, PacedPacketInfo()));
CreatePacket(kHighArrivalTimeMs + 64, 210, 0, 1500, PacedPacketInfo()));
packets.push_back(
CreatePacket(kHighArrivalTimeMs + 64, 210, 1, 1500, PacedPacketInfo()));
CreatePacket(kHighArrivalTimeMs - 64, 210, 1, 1500, PacedPacketInfo()));
packets.push_back(
CreatePacket(kHighArrivalTimeMs, 220, 2, 1500, PacedPacketInfo()));