Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0de21343 authored by Cindy Zhou's avatar Cindy Zhou Committed by Android (Google) Code Review
Browse files

Merge changes Ie20ffc1a,Ie6af19a5

* changes:
  Libaaudio Integer Overflow Sanitizer Bug Fix
  Libaaudio Enable Integer Overflow and Bound Sanitizers
parents f72774bf 03a2061d
Loading
Loading
Loading
Loading
+28 −1
Original line number Diff line number Diff line
@@ -40,6 +40,20 @@ cc_library {
        "libutils",
        "libbinder",
    ],

    sanitize: {
        integer_overflow: true,
        misc_undefined: ["bounds"],
        diag: {
            integer_overflow: true,
            misc_undefined: ["bounds"],
            no_recover: [
                "bounds",
                "integer",
            ],
        },
    },

}

cc_library {
@@ -57,7 +71,7 @@ cc_library {
    export_include_dirs: ["."],
    header_libs: [
        "libaaudio_headers",
        "libmedia_headers"
        "libmedia_headers",
    ],
    export_header_lib_headers: ["libaaudio_headers"],

@@ -116,4 +130,17 @@ cc_library {
        "flowgraph/SourceI16.cpp",
        "flowgraph/SourceI24.cpp",
    ],
    sanitize: {
        integer_overflow: true,
        misc_undefined: ["bounds"],
        diag: {
            integer_overflow: true,
            misc_undefined: ["bounds"],
            no_recover: [
                "bounds",
                "integer",
            ],
        },
    },

}
+9 −3
Original line number Diff line number Diff line
@@ -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) {