diff --git a/media/libaudioclient/IAudioFlinger.cpp b/media/libaudioclient/IAudioFlinger.cpp index 873d836519..a20f1f28d5 100644 --- a/media/libaudioclient/IAudioFlinger.cpp +++ b/media/libaudioclient/IAudioFlinger.cpp @@ -903,13 +903,15 @@ status_t BnAudioFlinger::onTransact( case SET_MODE: case SET_MIC_MUTE: case SET_LOW_RAM_DEVICE: - case SYSTEM_READY: - if (IPCThreadState::self()->getCallingUid() >= AID_APP_START) { + case SYSTEM_READY: { + uid_t multiUserClientUid = IPCThreadState::self()->getCallingUid() % AID_USER_OFFSET; + if (multiUserClientUid >= AID_APP_START) { ALOGW("%s: transaction %d received from PID %d unauthorized UID %d", __func__, code, IPCThreadState::self()->getCallingPid(), IPCThreadState::self()->getCallingUid()); return INVALID_OPERATION; } + } break; default: break; } diff --git a/media/libaudioclient/IAudioPolicyService.cpp b/media/libaudioclient/IAudioPolicyService.cpp index 0b98502af8..c0d5388fc2 100644 --- a/media/libaudioclient/IAudioPolicyService.cpp +++ b/media/libaudioclient/IAudioPolicyService.cpp @@ -872,13 +872,15 @@ status_t BnAudioPolicyService::onTransact( case INIT_STREAM_VOLUME: case SET_STREAM_VOLUME: case REGISTER_POLICY_MIXES: - case SET_MASTER_MONO: - if (IPCThreadState::self()->getCallingUid() >= AID_APP_START) { + case SET_MASTER_MONO: { + uid_t multiUserClientUid = IPCThreadState::self()->getCallingUid() % AID_USER_OFFSET; + if (multiUserClientUid >= AID_APP_START) { ALOGW("%s: transaction %d received from PID %d unauthorized UID %d", __func__, code, IPCThreadState::self()->getCallingPid(), IPCThreadState::self()->getCallingUid()); return INVALID_OPERATION; } + } break; default: break; } diff --git a/services/audiopolicy/service/AudioPolicyService.cpp b/services/audiopolicy/service/AudioPolicyService.cpp index 90a5a0f2c4..5d90408900 100644 --- a/services/audiopolicy/service/AudioPolicyService.cpp +++ b/services/audiopolicy/service/AudioPolicyService.cpp @@ -273,7 +273,7 @@ void AudioPolicyService::NotificationClient::onAudioPatchListUpdate() void AudioPolicyService::NotificationClient::onDynamicPolicyMixStateUpdate( const String8& regId, int32_t state) { - if (mAudioPolicyServiceClient != 0 && mUid < AID_APP_START) { + if (mAudioPolicyServiceClient != 0 && (mUid % AID_USER_OFFSET) < AID_APP_START) { mAudioPolicyServiceClient->onDynamicPolicyMixStateUpdate(regId, state); } } @@ -283,7 +283,7 @@ void AudioPolicyService::NotificationClient::onRecordingConfigurationUpdate( const audio_config_base_t *clientConfig, const audio_config_base_t *deviceConfig, audio_patch_handle_t patchHandle) { - if (mAudioPolicyServiceClient != 0 && mUid < AID_APP_START) { + if (mAudioPolicyServiceClient != 0 && (mUid % AID_USER_OFFSET) < AID_APP_START) { mAudioPolicyServiceClient->onRecordingConfigurationUpdate(event, clientInfo, clientConfig, deviceConfig, patchHandle); }