diff options
author | myfluxi <linflux@arcor.de> | 2016-11-22 23:11:06 +0100 |
---|---|---|
committer | Michael W <baddaemon87@gmail.com> | 2019-09-22 20:37:37 +0200 |
commit | c4ff01c23fa4f589ec7ed386dfd9aa7446dce825 (patch) | |
tree | e06438c42ea3ca7d4671f3c55d0489b52abed73c | |
parent | ba3a3219ec718ff488e44b5eaefe85b461c2d89b (diff) | |
download | frameworks_av-c4ff01c23fa4f589ec7ed386dfd9aa7446dce825.tar.gz frameworks_av-c4ff01c23fa4f589ec7ed386dfd9aa7446dce825.tar.bz2 frameworks_av-c4ff01c23fa4f589ec7ed386dfd9aa7446dce825.zip |
audioflinger: Fix audio for WifiDisplay
AudioFlinger is not able to determine the correct
pid/tid for WifiDisplay and thus we do not pass checks
for CAPTURE_AUDIO_OUTPUT and RECORD_AUDIO permissions.
To fix audio for WifiDisplay, it should be safe to
always allow a trusted calling uid (AID_MEDIA which
has the same perms as AID_AUDIOSERVER).
Change-Id: Ifa46d8e77a43027645cad02a04263b58e134c3ad
-rw-r--r-- | services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp index 0edec708f3..0a4e665661 100644 --- a/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp +++ b/services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp @@ -356,7 +356,7 @@ status_t AudioPolicyService::getInputForAttr(const audio_attributes_t *attr, } // check calling permissions - if (!recordingAllowed(opPackageName, pid, uid)) { + if (!isTrustedCallingUid(callingUid) && !recordingAllowed(opPackageName, pid, uid)) { ALOGE("%s permission denied: recording not allowed for uid %d pid %d", __func__, uid, pid); return PERMISSION_DENIED; @@ -397,7 +397,7 @@ status_t AudioPolicyService::getInputForAttr(const audio_attributes_t *attr, case AudioPolicyInterface::API_INPUT_TELEPHONY_RX: // FIXME: use the same permission as for remote submix for now. case AudioPolicyInterface::API_INPUT_MIX_CAPTURE: - if (!captureAudioOutputAllowed(pid, uid)) { + if (!isTrustedCallingUid(callingUid) && !captureAudioOutputAllowed(pid, uid)) { ALOGE("getInputForAttr() permission denied: capture not allowed"); status = PERMISSION_DENIED; } @@ -500,7 +500,7 @@ status_t AudioPolicyService::startInput(audio_port_handle_t portId, bool *silenc } // check calling permissions - if (!startRecording(client->opPackageName, client->pid, client->uid)) { + if (!isTrustedCallingUid(IPCThreadState::self()->getCallingUid()) && !startRecording(client->opPackageName, client->pid, client->uid)) { ALOGE("%s permission denied: recording not allowed for uid %d pid %d", __func__, client->uid, client->pid); return PERMISSION_DENIED; |