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

Commit 42f2fab1 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

am: a3416fc6

Change-Id: Ib81560c9faa863c02cad8c5e2979a9d9551021ea
parents 18a67176 a3416fc6
Loading
Loading
Loading
Loading
+15 −0
Original line number Original line Diff line number Diff line
@@ -438,6 +438,21 @@ AudioFlinger::PlaybackThread::Track::Track(
        mAudioTrackServerProxy = new AudioTrackServerProxy(mCblk, mBuffer, frameCount,
        mAudioTrackServerProxy = new AudioTrackServerProxy(mCblk, mBuffer, frameCount,
                mFrameSize, !isExternalTrack(), sampleRate);
                mFrameSize, !isExternalTrack(), sampleRate);
    } else {
    } 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,
        mAudioTrackServerProxy = new StaticAudioTrackServerProxy(mCblk, mBuffer, frameCount,
                mFrameSize);
                mFrameSize);
    }
    }