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

Commit 6790e790 authored by Andy Hung's avatar Andy Hung Committed by android-build-merger
Browse files

Track: Check buffer size of static tracks

am: cf39f0e6

Change-Id: Iad9a3f69fa97d8da9db8f1fed864a2e15d5bbb2a
parents f242b890 cf39f0e6
Loading
Loading
Loading
Loading
+15 −0
Original line number Original line Diff line number Diff line
@@ -367,6 +367,21 @@ AudioFlinger::PlaybackThread::Track::Track(
            mAudioTrackServerProxy = new AudioTrackServerProxy(mCblk, mBuffer, frameCount,
            mAudioTrackServerProxy = new AudioTrackServerProxy(mCblk, mBuffer, frameCount,
                    mFrameSize);
                    mFrameSize);
        } 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);
        }
        }