From 27398d6632d34df8fd723c2f84d4eaabb2890d1e Mon Sep 17 00:00:00 2001 From: Dan Minor Date: Wed, 1 Jul 2020 12:16:16 -0400 Subject: [PATCH] Prevent undefined shift in TimestampWrapAroundHandler::Unwrap If num_wrap_ is zero this will result in a left shift of a negative number, which is undefined behaviour. Bug: webrtc:11742 Change-Id: I4a6ac448c5af82e15beb25ed55c16bab26e6ee5f Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178441 Commit-Queue: Dan Minor Reviewed-by: Karl Wiberg Cr-Commit-Position: refs/heads/master@{#31608} --- rtc_base/time_utils.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rtc_base/time_utils.cc b/rtc_base/time_utils.cc index 8d919262d3..11c9d5a47f 100644 --- a/rtc_base/time_utils.cc +++ b/rtc_base/time_utils.cc @@ -247,7 +247,7 @@ int64_t TimestampWrapAroundHandler::Unwrap(uint32_t ts) { ++num_wrap_; } else if ((ts - last_ts_) > 0xf0000000) { // Backwards wrap. Unwrap with last wrap count and don't update last_ts_. - return ts + ((num_wrap_ - 1) << 32); + return ts + (num_wrap_ - 1) * (int64_t{1} << 32); } last_ts_ = ts;