From 8731176b922ad7d82d0407f2ac36d9f5396f9ac2 Mon Sep 17 00:00:00 2001 From: Henrik Lundin Date: Mon, 23 Oct 2017 11:36:01 +0200 Subject: [PATCH] NetEq: Fix an UBSan error UBSan will trigger when shifting a negative value. This change avoids that by replacing "x << 8" with "x * (1 << 8)". Bug: chromium:666877 Change-Id: Ic89bd98e5a3feff35075df96b104b386cb4d8803 Reviewed-on: https://webrtc-review.googlesource.com/14552 Reviewed-by: Karl Wiberg Commit-Queue: Henrik Lundin Cr-Commit-Position: refs/heads/master@{#20387} --- modules/audio_coding/neteq/buffer_level_filter.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/audio_coding/neteq/buffer_level_filter.cc b/modules/audio_coding/neteq/buffer_level_filter.cc index 5df59c7243..6005de6989 100644 --- a/modules/audio_coding/neteq/buffer_level_filter.cc +++ b/modules/audio_coding/neteq/buffer_level_filter.cc @@ -40,9 +40,9 @@ void BufferLevelFilter::Update(size_t buffer_size_packets, // value of |time_stretched_samples| from |filtered_current_level_| after // converting |time_stretched_samples| from samples to packets in Q8. // Make sure that the filtered value remains non-negative. - filtered_current_level_ = std::max(0, - filtered_current_level_ - - (time_stretched_samples << 8) / static_cast(packet_len_samples)); + filtered_current_level_ = std::max( + 0, filtered_current_level_ - (time_stretched_samples * (1 << 8)) / + static_cast(packet_len_samples)); } }