summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormyfluxi <linflux@arcor.de>2016-11-22 23:11:06 +0100
committerMichael W <baddaemon87@gmail.com>2019-09-22 20:37:37 +0200
commitc4ff01c23fa4f589ec7ed386dfd9aa7446dce825 (patch)
treee06438c42ea3ca7d4671f3c55d0489b52abed73c
parentba3a3219ec718ff488e44b5eaefe85b461c2d89b (diff)
downloadframeworks_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.cpp6
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;