Fix overflow sanitizer in Visualizer_command.
There's an intended integer overflow in the Visualizer_command function.
This refactors it to use the builtin overflow-safe function.
runtime error: unsigned integer overflow: 1664 - 4048 cannot be
represented in type 'unsigned int'
Bug: 30969751
Test: Builds and boots.
Change-Id: I63a505f4b073480f52d0b073ec5e45c52212caa8
Merged-In: I63a505f4b073480f52d0b073ec5e45c52212caa8
(cherry picked from commit 612d8fcbc996ecd9e0c58f7e2b9fb07d004f29da)
diff --git a/media/libeffects/visualizer/EffectVisualizer.cpp b/media/libeffects/visualizer/EffectVisualizer.cpp
index c33f9f5..807f24d 100644
--- a/media/libeffects/visualizer/EffectVisualizer.cpp
+++ b/media/libeffects/visualizer/EffectVisualizer.cpp
@@ -594,7 +594,9 @@
deltaSmpl = CAPTURE_BUF_SIZE;
}
- int32_t capturePoint = (int32_t)pContext->mCaptureIdx - deltaSmpl;
+ int32_t capturePoint;
+ //capturePoint = (int32_t)pContext->mCaptureIdx - deltaSmpl;
+ __builtin_sub_overflow((int32_t)pContext->mCaptureIdx, deltaSmpl, &capturePoint);
// a negative capturePoint means we wrap the buffer.
if (capturePoint < 0) {
uint32_t size = -capturePoint;