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

Commit 6d80b687 authored by Eric Laurent's avatar Eric Laurent
Browse files

audio policy: validate stream type received from binder calls.

Bug: 18001784.
Bug: 18002005.
Change-Id: If08866a3c21bcbfd8cdbbf8336bcf1faad66f321
parent f106b199
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -226,6 +226,9 @@ audio_io_handle_t AudioPolicyService::getOutput(audio_stream_type_t stream,
                                    uint32_t channels,
                                    audio_output_flags_t flags)
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return 0;
    }
    if (mpAudioPolicy == NULL) {
        return 0;
    }
@@ -238,6 +241,9 @@ status_t AudioPolicyService::startOutput(audio_io_handle_t output,
                                         audio_stream_type_t stream,
                                         int session)
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return BAD_VALUE;
    }
    if (mpAudioPolicy == NULL) {
        return NO_INIT;
    }
@@ -250,6 +256,9 @@ status_t AudioPolicyService::stopOutput(audio_io_handle_t output,
                                        audio_stream_type_t stream,
                                        int session)
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return BAD_VALUE;
    }
    if (mpAudioPolicy == NULL) {
        return NO_INIT;
    }
@@ -423,6 +432,9 @@ status_t AudioPolicyService::getStreamVolumeIndex(audio_stream_type_t stream,

uint32_t AudioPolicyService::getStrategyForStream(audio_stream_type_t stream)
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return 0;
    }
    if (mpAudioPolicy == NULL) {
        return 0;
    }
@@ -433,6 +445,9 @@ uint32_t AudioPolicyService::getStrategyForStream(audio_stream_type_t stream)

audio_devices_t AudioPolicyService::getDevicesForStream(audio_stream_type_t stream)
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return (audio_devices_t)0;
    }
    if (mpAudioPolicy == NULL) {
        return (audio_devices_t)0;
    }
@@ -478,8 +493,11 @@ status_t AudioPolicyService::setEffectEnabled(int id, bool enabled)

bool AudioPolicyService::isStreamActive(audio_stream_type_t stream, uint32_t inPastMs) const
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return false;
    }
    if (mpAudioPolicy == NULL) {
        return 0;
        return false;
    }
    Mutex::Autolock _l(mLock);
    return mpAudioPolicy->is_stream_active(mpAudioPolicy, stream, inPastMs);