Loading services/audioflinger/AudioFlinger.cpp +0 −6 Original line number Diff line number Diff line Loading @@ -1622,12 +1622,6 @@ sp<media::IAudioRecord> AudioFlinger::createRecord(const CreateRecordInput& inpu clientPid = callingPid; } // check calling permissions if (!recordingAllowed(input.opPackageName, input.clientInfo.clientTid, clientUid)) { ALOGE("createRecord() permission denied: recording not allowed"); lStatus = PERMISSION_DENIED; goto Exit; } // we don't yet support anything other than linear PCM if (!audio_is_valid_format(input.config.format) || !audio_is_linear_pcm(input.config.format)) { ALOGE("createRecord() invalid format %#x", input.config.format); Loading services/audioflinger/Threads.cpp +0 −4 Original line number Diff line number Diff line Loading @@ -7801,10 +7801,6 @@ status_t AudioFlinger::MmapThread::start(const AudioClient& client, return NO_ERROR; } if (!isOutput() && !recordingAllowed(client.packageName, client.clientPid, client.clientUid)) { return PERMISSION_DENIED; } audio_port_handle_t portId = AUDIO_PORT_HANDLE_NONE; audio_io_handle_t io = mId; Loading services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp +23 −5 Original line number Diff line number Diff line Loading @@ -296,6 +296,7 @@ status_t AudioPolicyService::getInputForAttr(const audio_attributes_t *attr, if (mAudioPolicyManager == NULL) { return NO_INIT; } // already checked by client, but double-check in case the client wrapper is bypassed if (attr->source < AUDIO_SOURCE_DEFAULT && attr->source >= AUDIO_SOURCE_CNT && attr->source != AUDIO_SOURCE_HOTWORD && attr->source != AUDIO_SOURCE_FM_TUNER) { Loading @@ -319,6 +320,13 @@ status_t AudioPolicyService::getInputForAttr(const audio_attributes_t *attr, pid = callingPid; } // check calling permissions if (!recordingAllowed(opPackageName, pid, uid)) { ALOGE("%s permission denied: recording not allowed for uid %d pid %d", __func__, uid, pid); return PERMISSION_DENIED; } if ((attr->source == AUDIO_SOURCE_HOTWORD) && !captureHotwordAllowed(pid, uid)) { return BAD_VALUE; } Loading Loading @@ -392,18 +400,28 @@ status_t AudioPolicyService::startInput(audio_port_handle_t portId, bool *silenc if (mAudioPolicyManager == NULL) { return NO_INIT; } sp<AudioRecordClient> client; { Mutex::Autolock _l(mLock); ssize_t index = mAudioRecordClients.indexOfKey(portId); if (index < 0) { return INVALID_OPERATION; } sp<AudioRecordClient> client = mAudioRecordClients.valueAt(index); client = mAudioRecordClients.valueAt(index); } // check calling permissions if (!recordingAllowed(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; } // If UID inactive it records silence until becoming active *silenced = !mUidPolicy->isUidActive(client->uid) && !client->isVirtualDevice; Mutex::Autolock _l(mLock); AudioPolicyInterface::concurrency_type__mask_t concurrency = AudioPolicyInterface::API_INPUT_CONCURRENCY_NONE; Loading Loading
services/audioflinger/AudioFlinger.cpp +0 −6 Original line number Diff line number Diff line Loading @@ -1622,12 +1622,6 @@ sp<media::IAudioRecord> AudioFlinger::createRecord(const CreateRecordInput& inpu clientPid = callingPid; } // check calling permissions if (!recordingAllowed(input.opPackageName, input.clientInfo.clientTid, clientUid)) { ALOGE("createRecord() permission denied: recording not allowed"); lStatus = PERMISSION_DENIED; goto Exit; } // we don't yet support anything other than linear PCM if (!audio_is_valid_format(input.config.format) || !audio_is_linear_pcm(input.config.format)) { ALOGE("createRecord() invalid format %#x", input.config.format); Loading
services/audioflinger/Threads.cpp +0 −4 Original line number Diff line number Diff line Loading @@ -7801,10 +7801,6 @@ status_t AudioFlinger::MmapThread::start(const AudioClient& client, return NO_ERROR; } if (!isOutput() && !recordingAllowed(client.packageName, client.clientPid, client.clientUid)) { return PERMISSION_DENIED; } audio_port_handle_t portId = AUDIO_PORT_HANDLE_NONE; audio_io_handle_t io = mId; Loading
services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp +23 −5 Original line number Diff line number Diff line Loading @@ -296,6 +296,7 @@ status_t AudioPolicyService::getInputForAttr(const audio_attributes_t *attr, if (mAudioPolicyManager == NULL) { return NO_INIT; } // already checked by client, but double-check in case the client wrapper is bypassed if (attr->source < AUDIO_SOURCE_DEFAULT && attr->source >= AUDIO_SOURCE_CNT && attr->source != AUDIO_SOURCE_HOTWORD && attr->source != AUDIO_SOURCE_FM_TUNER) { Loading @@ -319,6 +320,13 @@ status_t AudioPolicyService::getInputForAttr(const audio_attributes_t *attr, pid = callingPid; } // check calling permissions if (!recordingAllowed(opPackageName, pid, uid)) { ALOGE("%s permission denied: recording not allowed for uid %d pid %d", __func__, uid, pid); return PERMISSION_DENIED; } if ((attr->source == AUDIO_SOURCE_HOTWORD) && !captureHotwordAllowed(pid, uid)) { return BAD_VALUE; } Loading Loading @@ -392,18 +400,28 @@ status_t AudioPolicyService::startInput(audio_port_handle_t portId, bool *silenc if (mAudioPolicyManager == NULL) { return NO_INIT; } sp<AudioRecordClient> client; { Mutex::Autolock _l(mLock); ssize_t index = mAudioRecordClients.indexOfKey(portId); if (index < 0) { return INVALID_OPERATION; } sp<AudioRecordClient> client = mAudioRecordClients.valueAt(index); client = mAudioRecordClients.valueAt(index); } // check calling permissions if (!recordingAllowed(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; } // If UID inactive it records silence until becoming active *silenced = !mUidPolicy->isUidActive(client->uid) && !client->isVirtualDevice; Mutex::Autolock _l(mLock); AudioPolicyInterface::concurrency_type__mask_t concurrency = AudioPolicyInterface::API_INPUT_CONCURRENCY_NONE; Loading