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

Commit 8ce05c76 authored by Eric Laurent's avatar Eric Laurent Committed by Andy Hung
Browse files

DO NOT MERGE - audio policy: validate stream type received from binder calls.

Bug: 18001784.
Bug: 18002005.
Change-Id: I8efa674dceff5a6e10251b1c7a55e9bb2d532395
(cherry picked from commit dea1541f)
parent 4855cc3d
Loading
Loading
Loading
Loading
+21 −0
Original line number Original line Diff line number Diff line
@@ -129,6 +129,9 @@ audio_io_handle_t AudioPolicyService::getOutput(audio_stream_type_t stream,
                                    audio_output_flags_t flags,
                                    audio_output_flags_t flags,
                                    const audio_offload_info_t *offloadInfo)
                                    const audio_offload_info_t *offloadInfo)
{
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return BAD_VALUE;
    }
    if (mAudioPolicyManager == NULL) {
    if (mAudioPolicyManager == NULL) {
        return 0;
        return 0;
    }
    }
@@ -158,6 +161,9 @@ status_t AudioPolicyService::startOutput(audio_io_handle_t output,
                                         audio_stream_type_t stream,
                                         audio_stream_type_t stream,
                                         int session)
                                         int session)
{
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return BAD_VALUE;
    }
    if (mAudioPolicyManager == NULL) {
    if (mAudioPolicyManager == NULL) {
        return NO_INIT;
        return NO_INIT;
    }
    }
@@ -182,6 +188,9 @@ status_t AudioPolicyService::stopOutput(audio_io_handle_t output,
                                        audio_stream_type_t stream,
                                        audio_stream_type_t stream,
                                        int session)
                                        int session)
{
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return BAD_VALUE;
    }
    if (mAudioPolicyManager == NULL) {
    if (mAudioPolicyManager == NULL) {
        return NO_INIT;
        return NO_INIT;
    }
    }
@@ -366,6 +375,9 @@ status_t AudioPolicyService::getStreamVolumeIndex(audio_stream_type_t stream,


uint32_t AudioPolicyService::getStrategyForStream(audio_stream_type_t stream)
uint32_t AudioPolicyService::getStrategyForStream(audio_stream_type_t stream)
{
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return BAD_VALUE;
    }
    if (mAudioPolicyManager == NULL) {
    if (mAudioPolicyManager == NULL) {
        return 0;
        return 0;
    }
    }
@@ -376,6 +388,9 @@ uint32_t AudioPolicyService::getStrategyForStream(audio_stream_type_t stream)


audio_devices_t AudioPolicyService::getDevicesForStream(audio_stream_type_t stream)
audio_devices_t AudioPolicyService::getDevicesForStream(audio_stream_type_t stream)
{
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return BAD_VALUE;
    }
    if (mAudioPolicyManager == NULL) {
    if (mAudioPolicyManager == NULL) {
        return (audio_devices_t)0;
        return (audio_devices_t)0;
    }
    }
@@ -422,6 +437,9 @@ status_t AudioPolicyService::setEffectEnabled(int id, bool enabled)


bool AudioPolicyService::isStreamActive(audio_stream_type_t stream, uint32_t inPastMs) const
bool AudioPolicyService::isStreamActive(audio_stream_type_t stream, uint32_t inPastMs) const
{
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return BAD_VALUE;
    }
    if (mAudioPolicyManager == NULL) {
    if (mAudioPolicyManager == NULL) {
        return 0;
        return 0;
    }
    }
@@ -431,6 +449,9 @@ bool AudioPolicyService::isStreamActive(audio_stream_type_t stream, uint32_t inP


bool AudioPolicyService::isStreamActiveRemotely(audio_stream_type_t stream, uint32_t inPastMs) const
bool AudioPolicyService::isStreamActiveRemotely(audio_stream_type_t stream, uint32_t inPastMs) const
{
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return BAD_VALUE;
    }
    if (mAudioPolicyManager == NULL) {
    if (mAudioPolicyManager == NULL) {
        return 0;
        return 0;
    }
    }
+21 −0
Original line number Original line Diff line number Diff line
@@ -134,6 +134,9 @@ audio_io_handle_t AudioPolicyService::getOutput(audio_stream_type_t stream,
                                    audio_output_flags_t flags,
                                    audio_output_flags_t flags,
                                    const audio_offload_info_t *offloadInfo)
                                    const audio_offload_info_t *offloadInfo)
{
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return BAD_VALUE;
    }
    if (mpAudioPolicy == NULL) {
    if (mpAudioPolicy == NULL) {
        return 0;
        return 0;
    }
    }
@@ -147,6 +150,9 @@ status_t AudioPolicyService::startOutput(audio_io_handle_t output,
                                         audio_stream_type_t stream,
                                         audio_stream_type_t stream,
                                         int session)
                                         int session)
{
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return BAD_VALUE;
    }
    if (mpAudioPolicy == NULL) {
    if (mpAudioPolicy == NULL) {
        return NO_INIT;
        return NO_INIT;
    }
    }
@@ -172,6 +178,9 @@ status_t AudioPolicyService::stopOutput(audio_io_handle_t output,
                                        audio_stream_type_t stream,
                                        audio_stream_type_t stream,
                                        int session)
                                        int session)
{
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return BAD_VALUE;
    }
    if (mpAudioPolicy == NULL) {
    if (mpAudioPolicy == NULL) {
        return NO_INIT;
        return NO_INIT;
    }
    }
@@ -368,6 +377,9 @@ status_t AudioPolicyService::getStreamVolumeIndex(audio_stream_type_t stream,


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


audio_devices_t AudioPolicyService::getDevicesForStream(audio_stream_type_t stream)
audio_devices_t AudioPolicyService::getDevicesForStream(audio_stream_type_t stream)
{
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return BAD_VALUE;
    }
    if (mpAudioPolicy == NULL) {
    if (mpAudioPolicy == NULL) {
        return (audio_devices_t)0;
        return (audio_devices_t)0;
    }
    }
@@ -424,6 +439,9 @@ status_t AudioPolicyService::setEffectEnabled(int id, bool enabled)


bool AudioPolicyService::isStreamActive(audio_stream_type_t stream, uint32_t inPastMs) const
bool AudioPolicyService::isStreamActive(audio_stream_type_t stream, uint32_t inPastMs) const
{
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return BAD_VALUE;
    }
    if (mpAudioPolicy == NULL) {
    if (mpAudioPolicy == NULL) {
        return 0;
        return 0;
    }
    }
@@ -433,6 +451,9 @@ bool AudioPolicyService::isStreamActive(audio_stream_type_t stream, uint32_t inP


bool AudioPolicyService::isStreamActiveRemotely(audio_stream_type_t stream, uint32_t inPastMs) const
bool AudioPolicyService::isStreamActiveRemotely(audio_stream_type_t stream, uint32_t inPastMs) const
{
{
    if (uint32_t(stream) >= AUDIO_STREAM_CNT) {
        return BAD_VALUE;
    }
    if (mpAudioPolicy == NULL) {
    if (mpAudioPolicy == NULL) {
        return 0;
        return 0;
    }
    }