OSDN Git Service

Fix for Multiplication overflow will be crash btstack
authorcnx421 <cnx421@gmail.com>
Fri, 6 Nov 2020 07:35:04 +0000 (15:35 +0800)
committerMyles Watson <mylesgw@google.com>
Fri, 13 Nov 2020 18:14:58 +0000 (18:14 +0000)
When a2dp using LDAC ecoding PCM,if encoding thread is runned by deley after 2 secends,
btstack will overflow .System will abort to crash by arm gcc code.

Bug: 172590955
Tag: #stability
Test: compile & verify basic functions working
Test: pair to a support LDAC ecode BT headset

Change-Id: Ie470bd51bfd7951d0c674b37aa6af7554cf9faa8

stack/a2dp/a2dp_vendor_ldac_encoder.cc

index 6114df4..0a1deb9 100644 (file)
@@ -587,8 +587,8 @@ static void a2dp_ldac_get_num_frame_iteration(uint8_t* num_of_iterations,
   a2dp_ldac_encoder_cb.ldac_feeding_state.last_frame_us = now_us;
 
   a2dp_ldac_encoder_cb.ldac_feeding_state.counter +=
-      a2dp_ldac_encoder_cb.ldac_feeding_state.bytes_per_tick * us_this_tick /
-      (A2DP_LDAC_ENCODER_INTERVAL_MS * 1000);
+      a2dp_ldac_encoder_cb.ldac_feeding_state.bytes_per_tick * (us_this_tick /
+      (float) (A2DP_LDAC_ENCODER_INTERVAL_MS * 1000));
 
   result =
       a2dp_ldac_encoder_cb.ldac_feeding_state.counter / pcm_bytes_per_frame;