Libaaudio Integer Overflow Sanitizer Bug Fix

Used built in arithmetic overflow checking function in areas where integer overflow sanitizer exposed bugs with native test test_atomic_fifo.

Bug: 143307218

Test: Ran the following native tests:
  test_atomic_fifo
  test_aaudio_recovery
  test_aaudio_marshalling
  test_n_streams
  test_bad_disconnect
  test_various
  test_session_id
  test_aaudio_monkey
  test_attributes
  test_interference
  test_flowgraph
  test_return_stop
  test_stop_hang
  test_full_queue
  test_histogram
Ran the following Cts tests:
  CtsNativeMediaAAudioTestCases

Change-Id: Ie20ffc1a535dec22d81ec27918e2d3eadda21be2
gugelfrei
Cindy Zhou 5 years ago
parent 30ed594000
commit 03a2061d53

@ -33,7 +33,9 @@ FifoControllerBase::~FifoControllerBase() {
}
fifo_frames_t FifoControllerBase::getFullFramesAvailable() {
return (fifo_frames_t) (getWriteCounter() - getReadCounter());
fifo_frames_t temp = 0;
__builtin_sub_overflow(getWriteCounter(), getReadCounter(), &temp);
return temp;
}
fifo_frames_t FifoControllerBase::getReadIndex() {
@ -42,7 +44,9 @@ fifo_frames_t FifoControllerBase::getReadIndex() {
}
void FifoControllerBase::advanceReadIndex(fifo_frames_t numFrames) {
setReadCounter(getReadCounter() + numFrames);
fifo_counter_t temp = 0;
__builtin_add_overflow(getReadCounter(), numFrames, &temp);
setReadCounter(temp);
}
fifo_frames_t FifoControllerBase::getEmptyFramesAvailable() {
@ -55,7 +59,9 @@ fifo_frames_t FifoControllerBase::getWriteIndex() {
}
void FifoControllerBase::advanceWriteIndex(fifo_frames_t numFrames) {
setWriteCounter(getWriteCounter() + numFrames);
fifo_counter_t temp = 0;
__builtin_add_overflow(getWriteCounter(), numFrames, &temp);
setWriteCounter(temp);
}
void FifoControllerBase::setThreshold(fifo_frames_t threshold) {

Loading…
Cancel
Save