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

Commit d0509021 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Check the buffer index from acquireBuffer" into klp-dev

parents f5d6e989 fc609407
Loading
Loading
Loading
Loading
+19 −2
Original line number Original line Diff line number Diff line
@@ -346,6 +346,12 @@ void GraphicBufferSource::suspend(bool suspend) {
            } else if (err != OK) {
            } else if (err != OK) {
                ALOGW("suspend: acquireBuffer returned err=%d", err);
                ALOGW("suspend: acquireBuffer returned err=%d", err);
                break;
                break;
            } else if (item.mBuf < 0 ||
                    item.mBuf >= BufferQueue::NUM_BUFFER_SLOTS) {
                // Invalid buffer index
                ALOGW("suspend: corrupted buffer index (%d)",
                        item.mBuf);
                break;
            }
            }


            --mNumFramesAvailable;
            --mNumFramesAvailable;
@@ -396,6 +402,10 @@ bool GraphicBufferSource::fillCodecBuffer_l() {
        // now what? fake end-of-stream?
        // now what? fake end-of-stream?
        ALOGW("fillCodecBuffer_l: acquireBuffer returned err=%d", err);
        ALOGW("fillCodecBuffer_l: acquireBuffer returned err=%d", err);
        return false;
        return false;
    } else if (item.mBuf < 0 || item.mBuf >= BufferQueue::NUM_BUFFER_SLOTS) {
        // Invalid buffer index
        ALOGW("fillCodecBuffer_l: corrupted buffer index (%d)", item.mBuf);
        return false;
    }
    }


    mNumFramesAvailable--;
    mNumFramesAvailable--;
@@ -696,10 +706,17 @@ void GraphicBufferSource::onFrameAvailable() {
        BufferQueue::BufferItem item;
        BufferQueue::BufferItem item;
        status_t err = mBufferQueue->acquireBuffer(&item, 0);
        status_t err = mBufferQueue->acquireBuffer(&item, 0);
        if (err == OK) {
        if (err == OK) {
            if (item.mBuf < 0 ||
                    item.mBuf >= BufferQueue::NUM_BUFFER_SLOTS) {
                // Invalid buffer index
                ALOGW("onFrameAvailable: corrupted buffer index (%d)",
                        item.mBuf);
                return;
            }
            // If this is the first time we're seeing this buffer, add it to our
            // If this is the first time we're seeing this buffer, add it to our
            // slot table.
            // slot table.
            if (item.mGraphicBuffer != NULL) {
            if (item.mGraphicBuffer != NULL) {
                ALOGV("fillCodecBuffer_l: setting mBufferSlot %d", item.mBuf);
                ALOGV("onFrameAvailable: setting mBufferSlot %d", item.mBuf);
                mBufferSlot[item.mBuf] = item.mGraphicBuffer;
                mBufferSlot[item.mBuf] = item.mGraphicBuffer;
            }
            }
            mBufferQueue->releaseBuffer(item.mBuf, item.mFrameNumber,
            mBufferQueue->releaseBuffer(item.mBuf, item.mFrameNumber,