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

Commit 69b0154d authored by Andy Hung's avatar Andy Hung Committed by android-build-merger
Browse files

Merge "Track: Check buffer size of static tracks" into lmp-dev am: 782a30d2...

Merge "Track: Check buffer size of static tracks" into lmp-dev am: 782a30d2 am: a3416fc6 am: 42f2fab1 am: 483cf883 am: f89b2427 am: 7779f826
am: c343fd28

Change-Id: I72c4c8d74ffaa8b8bc03a265ae3ff06796bbeb5b
parents 7c70a548 c343fd28
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -400,6 +400,21 @@ AudioFlinger::PlaybackThread::Track::Track(
        mAudioTrackServerProxy = new AudioTrackServerProxy(mCblk, mBuffer, frameCount,
                mFrameSize, !isExternalTrack(), sampleRate);
    } else {
        // Is the shared buffer of sufficient size?
        // (frameCount * mFrameSize) is <= SIZE_MAX, checked in TrackBase.
        if (sharedBuffer->size() < frameCount * mFrameSize) {
            // Workaround: clear out mCblk to indicate track hasn't been properly created.
            mCblk->~audio_track_cblk_t();   // destroy our shared-structure.
            if (mClient == 0) {
                free(mCblk);
            }
            mCblk = NULL;

            mSharedBuffer.clear(); // release shared buffer early
            android_errorWriteLog(0x534e4554, "38340117");
            return;
        }

        mAudioTrackServerProxy = new StaticAudioTrackServerProxy(mCblk, mBuffer, frameCount,
                mFrameSize);
    }