Fix integer overflow in rtcp::TransportFeedback::IsConsistent

Bug: webrtc:13141
Change-Id: I450d7ffbef86ce67b3e6fdde0520bdb6ac7d666c
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/231840
Reviewed-by: Åsa Persson <asapersson@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#34979}
This commit is contained in:
Danil Chapovalov
2021-09-13 14:50:41 +02:00
committed by WebRTC LUCI CQ
parent 4d4f62f6e7
commit e130084c68
2 changed files with 10 additions and 1 deletions

View File

@ -549,7 +549,7 @@ bool TransportFeedback::IsConsistent() const {
<< num_seq_no_;
return false;
}
int64_t timestamp_us = base_time_ticks_ * kBaseScaleFactor;
int64_t timestamp_us = GetBaseTimeUs();
auto packet_it = received_packets_.begin();
uint16_t seq_no = base_seq_no_;
for (DeltaSize delta_size : delta_sizes) {

View File

@ -232,6 +232,15 @@ TEST(RtcpPacketTest, TransportFeedbackTwoBitVectorFull) {
test.VerifyPacket();
}
TEST(RtcpPacketTest, TransportFeedbackWithLargeBaseTimeIsConsistent) {
TransportFeedback tb;
constexpr int64_t kTimestampUs =
int64_t{0x7fff'ffff} * TransportFeedback::kDeltaScaleFactor;
tb.SetBase(/*base_sequence=*/0, /*ref_timestamp_us=*/kTimestampUs);
tb.AddReceivedPacket(/*base_sequence=*/0, /*ref_timestamp_us=*/kTimestampUs);
EXPECT_TRUE(tb.IsConsistent());
}
TEST(RtcpPacketTest, TransportFeedbackLargeAndNegativeDeltas) {
const uint16_t kReceived[] = {1, 2, 6, 7, 8};
const int64_t kReceiveTimes[] = {