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

Commit ef0a06ba 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 am: 69b0154d am: 1d66db35
am: 849b3d0c

Change-Id: Icad90fe25c2d54202216c28488f025ce76cedd3b
parents 55acba90 849b3d0c
Loading
Loading
Loading
Loading
+15 −0
Original line number Diff line number Diff line
@@ -399,6 +399,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);
    }