Loading media/utils/ServiceUtilities.cpp +0 −4 Original line number Diff line number Diff line Loading @@ -468,10 +468,6 @@ AttributionSourceState getCallingAttributionSource() { return attributionSource; } void purgePermissionCache() { PermissionCache::purgeCache(); } status_t checkIMemory(const sp<IMemory>& iMemory) { if (iMemory == 0) { Loading media/utils/fuzzers/ServiceUtilitiesFuzz.cpp +0 −3 Original line number Diff line number Diff line Loading @@ -75,11 +75,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { android::startRecording(attributionSource, deviceId, msgStr16, source); android::finishRecording(attributionSource, deviceId, source); android::captureAudioOutputAllowed(attributionSource); android::captureMediaOutputAllowed(attributionSource); android::captureHotwordAllowed(attributionSource); android::modifyPhoneStateAllowed(attributionSource); android::bypassInterruptionPolicyAllowed(attributionSource); android::settingsAllowed(); android::modifyAudioRoutingAllowed(); android::modifyDefaultAudioEffectsAllowed(); android::dumpAllowed(); Loading media/utils/include/mediautils/ServiceUtilities.h +0 −8 Original line number Diff line number Diff line Loading @@ -99,23 +99,15 @@ void finishRecording(const AttributionSourceState& attributionSource, uint32_t v std::optional<AttributionSourceState> resolveAttributionSource( const AttributionSourceState& callerAttributionSource, uint32_t virtualDeviceId); bool captureAudioOutputAllowed(const AttributionSourceState& attributionSource); bool captureMediaOutputAllowed(const AttributionSourceState& attributionSource); bool captureTunerAudioInputAllowed(const AttributionSourceState& attributionSource); bool captureVoiceCommunicationOutputAllowed(const AttributionSourceState& attributionSource); bool bypassConcurrentPolicyAllowed(const AttributionSourceState& attributionSource) ; bool accessUltrasoundAllowed(const AttributionSourceState& attributionSource); bool captureHotwordAllowed(const AttributionSourceState& attributionSource); bool settingsAllowed(); bool modifyAudioRoutingAllowed(); bool modifyAudioRoutingAllowed(const AttributionSourceState& attributionSource); bool modifyDefaultAudioEffectsAllowed(); bool modifyDefaultAudioEffectsAllowed(const AttributionSourceState& attributionSource); bool modifyAudioSettingsPrivilegedAllowed(const AttributionSourceState& attributionSource); bool dumpAllowed(); bool modifyPhoneStateAllowed(const AttributionSourceState& attributionSource); bool bypassInterruptionPolicyAllowed(const AttributionSourceState& attributionSource); bool callAudioInterceptionAllowed(const AttributionSourceState& attributionSource); void purgePermissionCache(); void anonymizeBluetoothAddress(char *address); Loading services/audioflinger/AudioFlinger.cpp +39 −194 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ #include <afutils/FallibleLockGuard.h> #include <afutils/NBAIO_Tee.h> #include <afutils/Permission.h> #include <afutils/PropertyUtils.h> #include <afutils/TypedLogger.h> #include <android-base/errors.h> Loading Loading @@ -97,7 +96,6 @@ using media::audio::common::AudioMMapPolicyType; using media::audio::common::AudioMode; using android::content::AttributionSourceState; using android::detail::AudioHalVersionInfo; using com::android::media::audio::audioserver_permissions; using com::android::media::permission::INativePermissionController; using com::android::media::permission::IPermissionProvider; using com::android::media::permission::NativePermissionController; Loading Loading @@ -562,41 +560,12 @@ status_t AudioFlinger::openMmapStreamImpl(bool isOutput, // TODO b/182392553: refactor or make clearer AttributionSourceState adjAttributionSource; if (!audioserver_permissions()) { pid_t clientPid = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_pid_t(client.attributionSource.pid)); bool updatePid = (clientPid == (pid_t)-1); const uid_t callingUid = IPCThreadState::self()->getCallingUid(); adjAttributionSource = client.attributionSource; if (!isAudioServerOrMediaServerOrSystemServerOrRootUid(callingUid)) { uid_t clientUid = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_uid_t(client.attributionSource.uid)); ALOGW_IF(clientUid != callingUid, "%s uid %d tried to pass itself off as %d", __FUNCTION__, callingUid, clientUid); adjAttributionSource.uid = VALUE_OR_RETURN_STATUS( legacy2aidl_uid_t_int32_t(callingUid)); updatePid = true; } if (updatePid) { const pid_t callingPid = IPCThreadState::self()->getCallingPid(); ALOGW_IF(clientPid != (pid_t)-1 && clientPid != callingPid, "%s uid %d pid %d tried to pass itself off as pid %d", __func__, callingUid, callingPid, clientPid); adjAttributionSource.pid = VALUE_OR_RETURN_STATUS( legacy2aidl_pid_t_int32_t(callingPid)); } adjAttributionSource = afutils::checkAttributionSourcePackage( adjAttributionSource); } else { auto validatedAttrSource = VALUE_OR_RETURN_CONVERTED( validateAttributionFromContextOrTrustedCaller(client.attributionSource, getPermissionProvider() )); // TODO pass wrapped object around adjAttributionSource = std::move(validatedAttrSource).unwrapInto(); } if (isOutput) { audio_config_t fullConfig = AUDIO_CONFIG_INITIALIZER; Loading Loading @@ -1084,44 +1053,12 @@ status_t AudioFlinger::createTrack(const media::CreateTrackRequest& _input, AttributionSourceState adjAttributionSource; pid_t callingPid = IPCThreadState::self()->getCallingPid(); if (!audioserver_permissions()) { adjAttributionSource = input.clientInfo.attributionSource; const uid_t callingUid = IPCThreadState::self()->getCallingUid(); uid_t clientUid = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_uid_t( input.clientInfo.attributionSource.uid)); pid_t clientPid = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_pid_t( input.clientInfo.attributionSource.pid)); bool updatePid = (clientPid == (pid_t)-1); if (!isAudioServerOrMediaServerOrSystemServerOrRootUid(callingUid)) { ALOGW_IF(clientUid != callingUid, "%s uid %d tried to pass itself off as %d", __FUNCTION__, callingUid, clientUid); adjAttributionSource.uid = VALUE_OR_RETURN_STATUS( legacy2aidl_uid_t_int32_t(callingUid)); clientUid = callingUid; updatePid = true; } if (updatePid) { ALOGW_IF(clientPid != (pid_t)-1 && clientPid != callingPid, "%s uid %d pid %d tried to pass itself off as pid %d", __func__, callingUid, callingPid, clientPid); clientPid = callingPid; adjAttributionSource.pid = VALUE_OR_RETURN_STATUS( legacy2aidl_pid_t_int32_t(callingPid)); } adjAttributionSource = afutils::checkAttributionSourcePackage( adjAttributionSource); } else { auto validatedAttrSource = VALUE_OR_RETURN_CONVERTED( validateAttributionFromContextOrTrustedCaller(input.clientInfo.attributionSource, getPermissionProvider() )); // TODO pass wrapped object around adjAttributionSource = std::move(validatedAttrSource).unwrapInto(); } DeviceIdVector selectedDeviceIds; audio_session_t sessionId = input.sessionId; Loading Loading @@ -1364,13 +1301,7 @@ status_t AudioFlinger::setMasterVolume(float value) } // check calling permissions if (audioserver_permissions()) { VALUE_OR_RETURN_CONVERTED(enforceCallingPermission(MODIFY_AUDIO_SETTINGS)); } else { if (!settingsAllowed()) { return PERMISSION_DENIED; } } audio_utils::lock_guard _l(mutex()); mMasterVolume = value; Loading Loading @@ -1410,13 +1341,7 @@ status_t AudioFlinger::setMasterBalance(float balance) } // check calling permissions if (audioserver_permissions()) { VALUE_OR_RETURN_CONVERTED(enforceCallingPermission(MODIFY_AUDIO_SETTINGS)); } else { if (!settingsAllowed()) { return PERMISSION_DENIED; } } // check range if (isnan(balance) || fabs(balance) > 1.f) { Loading Loading @@ -1448,13 +1373,7 @@ status_t AudioFlinger::setMode(audio_mode_t mode) } // check calling permissions if (audioserver_permissions()) { VALUE_OR_RETURN_CONVERTED(enforceCallingPermission(MODIFY_AUDIO_SETTINGS)); } else { if (!settingsAllowed()) { return PERMISSION_DENIED; } } if (uint32_t(mode) >= AUDIO_MODE_CNT) { ALOGW("Illegal value: setMode(%d)", mode); return BAD_VALUE; Loading Loading @@ -1494,13 +1413,7 @@ status_t AudioFlinger::setMicMute(bool state) } // check calling permissions if (audioserver_permissions()) { VALUE_OR_RETURN_CONVERTED(enforceCallingPermission(MODIFY_AUDIO_SETTINGS)); } else { if (!settingsAllowed()) { return PERMISSION_DENIED; } } audio_utils::lock_guard lock(hardwareMutex()); if (mPrimaryHardwareDev == nullptr) { Loading Loading @@ -1569,13 +1482,7 @@ status_t AudioFlinger::setMasterMute(bool muted) } // check calling permissions if (audioserver_permissions()) { VALUE_OR_RETURN_CONVERTED(enforceCallingPermission(MODIFY_AUDIO_SETTINGS)); } else { if (!settingsAllowed()) { return PERMISSION_DENIED; } } audio_utils::lock_guard _l(mutex()); mMasterMute = muted; Loading Loading @@ -1871,13 +1778,7 @@ status_t AudioFlinger::setParameters(audio_io_handle_t ioHandle, const String8& IPCThreadState::self()->getCallingPid(), IPCThreadState::self()->getCallingUid()); // check calling permissions if (audioserver_permissions()) { VALUE_OR_RETURN_CONVERTED(enforceCallingPermission(MODIFY_AUDIO_SETTINGS)); } else { if (!settingsAllowed()) { return PERMISSION_DENIED; } } String8 filteredKeyValuePairs = keyValuePairs; filterReservedParameters(filteredKeyValuePairs, IPCThreadState::self()->getCallingUid()); Loading Loading @@ -2118,13 +2019,7 @@ status_t AudioFlinger::setVoiceVolume(float value) } // check calling permissions if (audioserver_permissions()) { VALUE_OR_RETURN_CONVERTED(enforceCallingPermission(MODIFY_AUDIO_SETTINGS)); } else { if (!settingsAllowed()) { return PERMISSION_DENIED; } } audio_utils::lock_guard lock(hardwareMutex()); if (mPrimaryHardwareDev == nullptr) { Loading Loading @@ -2352,32 +2247,6 @@ status_t AudioFlinger::createRecord(const media::CreateRecordRequest& _input, AttributionSourceState adjAttributionSource; pid_t callingPid = IPCThreadState::self()->getCallingPid(); if (!audioserver_permissions()) { adjAttributionSource = input.clientInfo.attributionSource; bool updatePid = (adjAttributionSource.pid == -1); const uid_t callingUid = IPCThreadState::self()->getCallingUid(); const uid_t currentUid = VALUE_OR_RETURN_STATUS(legacy2aidl_uid_t_int32_t( adjAttributionSource.uid)); if (!isAudioServerOrMediaServerOrSystemServerOrRootUid(callingUid)) { ALOGW_IF(currentUid != callingUid, "%s uid %d tried to pass itself off as %d", __FUNCTION__, callingUid, currentUid); adjAttributionSource.uid = VALUE_OR_RETURN_STATUS( legacy2aidl_uid_t_int32_t(callingUid)); updatePid = true; } const pid_t currentPid = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_pid_t( adjAttributionSource.pid)); if (updatePid) { ALOGW_IF(currentPid != (pid_t)-1 && currentPid != callingPid, "%s uid %d pid %d tried to pass itself off as pid %d", __func__, callingUid, callingPid, currentPid); adjAttributionSource.pid = VALUE_OR_RETURN_STATUS( legacy2aidl_pid_t_int32_t(callingPid)); } adjAttributionSource = afutils::checkAttributionSourcePackage( adjAttributionSource); } else { auto validatedAttrSource = VALUE_OR_RETURN_CONVERTED( validateAttributionFromContextOrTrustedCaller( input.clientInfo.attributionSource, Loading @@ -2385,7 +2254,6 @@ status_t AudioFlinger::createRecord(const media::CreateRecordRequest& _input, )); // TODO pass wrapped object around adjAttributionSource = std::move(validatedAttrSource).unwrapInto(); } // further format checks are performed by createRecordTrack_l() if (!audio_is_valid_format(input.config.format)) { Loading Loading @@ -2604,18 +2472,12 @@ audio_module_handle_t AudioFlinger::loadHwModule(const char *name) if (name == NULL) { return AUDIO_MODULE_HANDLE_NONE; } if (audioserver_permissions()) { const auto res = enforceCallingPermission(MODIFY_AUDIO_SETTINGS); if (!res.ok()) { ALOGE("Function: %s perm check result (%s)", __FUNCTION__, errorToString(res.error()).c_str()); return AUDIO_MODULE_HANDLE_NONE; } } else { if (!settingsAllowed()) { return AUDIO_MODULE_HANDLE_NONE; } } audio_utils::lock_guard _l(mutex()); audio_utils::lock_guard lock(hardwareMutex()); Loading Loading @@ -4231,20 +4093,6 @@ status_t AudioFlinger::createEffect(const media::CreateEffectRequest& request, status_t lStatus = NO_ERROR; uid_t callingUid = IPCThreadState::self()->getCallingUid(); pid_t currentPid; if (!audioserver_permissions()) { adjAttributionSource.uid = VALUE_OR_RETURN_STATUS(legacy2aidl_uid_t_int32_t(callingUid)); currentPid = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_pid_t(adjAttributionSource.pid)); if (currentPid == -1 || !isAudioServerOrMediaServerOrSystemServerOrRootUid(callingUid)) { const pid_t callingPid = IPCThreadState::self()->getCallingPid(); ALOGW_IF(currentPid != -1 && currentPid != callingPid, "%s uid %d pid %d tried to pass itself off as pid %d", __func__, callingUid, callingPid, currentPid); adjAttributionSource.pid = VALUE_OR_RETURN_STATUS( legacy2aidl_pid_t_int32_t(callingPid)); currentPid = callingPid; } adjAttributionSource = afutils::checkAttributionSourcePackage(adjAttributionSource); } else { auto validatedAttrSource = VALUE_OR_RETURN_CONVERTED( validateAttributionFromContextOrTrustedCaller(request.attributionSource, getPermissionProvider() Loading @@ -4252,7 +4100,6 @@ status_t AudioFlinger::createEffect(const media::CreateEffectRequest& request, // TODO pass wrapped object around adjAttributionSource = std::move(validatedAttrSource).unwrapInto(); currentPid = adjAttributionSource.pid; } ALOGV("createEffect pid %d, effectClient %p, priority %d, sessionId %d, io %d, factory %p", Loading @@ -4266,7 +4113,7 @@ status_t AudioFlinger::createEffect(const media::CreateEffectRequest& request, } bool isSettingsAllowed; if (audioserver_permissions()) { { const auto res = getPermissionProvider().checkPermission( MODIFY_AUDIO_SETTINGS, IPCThreadState::self()->getCallingUid()); Loading @@ -4275,8 +4122,6 @@ status_t AudioFlinger::createEffect(const media::CreateEffectRequest& request, goto Exit; } isSettingsAllowed = res.value(); } else { isSettingsAllowed = settingsAllowed(); } // check audio settings permission for global effects Loading services/audioflinger/AudioFlinger.h +0 −1 Original line number Diff line number Diff line Loading @@ -38,7 +38,6 @@ #include <media/IAudioPolicyServiceLocal.h> #include <media/MediaMetricsItem.h> #include <media/audiohal/DevicesFactoryHalInterface.h> #include <mediautils/ServiceUtilities.h> #include <mediautils/Synchronization.h> #include <psh_utils/AudioPowerManager.h> Loading Loading
media/utils/ServiceUtilities.cpp +0 −4 Original line number Diff line number Diff line Loading @@ -468,10 +468,6 @@ AttributionSourceState getCallingAttributionSource() { return attributionSource; } void purgePermissionCache() { PermissionCache::purgeCache(); } status_t checkIMemory(const sp<IMemory>& iMemory) { if (iMemory == 0) { Loading
media/utils/fuzzers/ServiceUtilitiesFuzz.cpp +0 −3 Original line number Diff line number Diff line Loading @@ -75,11 +75,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { android::startRecording(attributionSource, deviceId, msgStr16, source); android::finishRecording(attributionSource, deviceId, source); android::captureAudioOutputAllowed(attributionSource); android::captureMediaOutputAllowed(attributionSource); android::captureHotwordAllowed(attributionSource); android::modifyPhoneStateAllowed(attributionSource); android::bypassInterruptionPolicyAllowed(attributionSource); android::settingsAllowed(); android::modifyAudioRoutingAllowed(); android::modifyDefaultAudioEffectsAllowed(); android::dumpAllowed(); Loading
media/utils/include/mediautils/ServiceUtilities.h +0 −8 Original line number Diff line number Diff line Loading @@ -99,23 +99,15 @@ void finishRecording(const AttributionSourceState& attributionSource, uint32_t v std::optional<AttributionSourceState> resolveAttributionSource( const AttributionSourceState& callerAttributionSource, uint32_t virtualDeviceId); bool captureAudioOutputAllowed(const AttributionSourceState& attributionSource); bool captureMediaOutputAllowed(const AttributionSourceState& attributionSource); bool captureTunerAudioInputAllowed(const AttributionSourceState& attributionSource); bool captureVoiceCommunicationOutputAllowed(const AttributionSourceState& attributionSource); bool bypassConcurrentPolicyAllowed(const AttributionSourceState& attributionSource) ; bool accessUltrasoundAllowed(const AttributionSourceState& attributionSource); bool captureHotwordAllowed(const AttributionSourceState& attributionSource); bool settingsAllowed(); bool modifyAudioRoutingAllowed(); bool modifyAudioRoutingAllowed(const AttributionSourceState& attributionSource); bool modifyDefaultAudioEffectsAllowed(); bool modifyDefaultAudioEffectsAllowed(const AttributionSourceState& attributionSource); bool modifyAudioSettingsPrivilegedAllowed(const AttributionSourceState& attributionSource); bool dumpAllowed(); bool modifyPhoneStateAllowed(const AttributionSourceState& attributionSource); bool bypassInterruptionPolicyAllowed(const AttributionSourceState& attributionSource); bool callAudioInterceptionAllowed(const AttributionSourceState& attributionSource); void purgePermissionCache(); void anonymizeBluetoothAddress(char *address); Loading
services/audioflinger/AudioFlinger.cpp +39 −194 Original line number Diff line number Diff line Loading @@ -28,7 +28,6 @@ #include <afutils/FallibleLockGuard.h> #include <afutils/NBAIO_Tee.h> #include <afutils/Permission.h> #include <afutils/PropertyUtils.h> #include <afutils/TypedLogger.h> #include <android-base/errors.h> Loading Loading @@ -97,7 +96,6 @@ using media::audio::common::AudioMMapPolicyType; using media::audio::common::AudioMode; using android::content::AttributionSourceState; using android::detail::AudioHalVersionInfo; using com::android::media::audio::audioserver_permissions; using com::android::media::permission::INativePermissionController; using com::android::media::permission::IPermissionProvider; using com::android::media::permission::NativePermissionController; Loading Loading @@ -562,41 +560,12 @@ status_t AudioFlinger::openMmapStreamImpl(bool isOutput, // TODO b/182392553: refactor or make clearer AttributionSourceState adjAttributionSource; if (!audioserver_permissions()) { pid_t clientPid = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_pid_t(client.attributionSource.pid)); bool updatePid = (clientPid == (pid_t)-1); const uid_t callingUid = IPCThreadState::self()->getCallingUid(); adjAttributionSource = client.attributionSource; if (!isAudioServerOrMediaServerOrSystemServerOrRootUid(callingUid)) { uid_t clientUid = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_uid_t(client.attributionSource.uid)); ALOGW_IF(clientUid != callingUid, "%s uid %d tried to pass itself off as %d", __FUNCTION__, callingUid, clientUid); adjAttributionSource.uid = VALUE_OR_RETURN_STATUS( legacy2aidl_uid_t_int32_t(callingUid)); updatePid = true; } if (updatePid) { const pid_t callingPid = IPCThreadState::self()->getCallingPid(); ALOGW_IF(clientPid != (pid_t)-1 && clientPid != callingPid, "%s uid %d pid %d tried to pass itself off as pid %d", __func__, callingUid, callingPid, clientPid); adjAttributionSource.pid = VALUE_OR_RETURN_STATUS( legacy2aidl_pid_t_int32_t(callingPid)); } adjAttributionSource = afutils::checkAttributionSourcePackage( adjAttributionSource); } else { auto validatedAttrSource = VALUE_OR_RETURN_CONVERTED( validateAttributionFromContextOrTrustedCaller(client.attributionSource, getPermissionProvider() )); // TODO pass wrapped object around adjAttributionSource = std::move(validatedAttrSource).unwrapInto(); } if (isOutput) { audio_config_t fullConfig = AUDIO_CONFIG_INITIALIZER; Loading Loading @@ -1084,44 +1053,12 @@ status_t AudioFlinger::createTrack(const media::CreateTrackRequest& _input, AttributionSourceState adjAttributionSource; pid_t callingPid = IPCThreadState::self()->getCallingPid(); if (!audioserver_permissions()) { adjAttributionSource = input.clientInfo.attributionSource; const uid_t callingUid = IPCThreadState::self()->getCallingUid(); uid_t clientUid = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_uid_t( input.clientInfo.attributionSource.uid)); pid_t clientPid = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_pid_t( input.clientInfo.attributionSource.pid)); bool updatePid = (clientPid == (pid_t)-1); if (!isAudioServerOrMediaServerOrSystemServerOrRootUid(callingUid)) { ALOGW_IF(clientUid != callingUid, "%s uid %d tried to pass itself off as %d", __FUNCTION__, callingUid, clientUid); adjAttributionSource.uid = VALUE_OR_RETURN_STATUS( legacy2aidl_uid_t_int32_t(callingUid)); clientUid = callingUid; updatePid = true; } if (updatePid) { ALOGW_IF(clientPid != (pid_t)-1 && clientPid != callingPid, "%s uid %d pid %d tried to pass itself off as pid %d", __func__, callingUid, callingPid, clientPid); clientPid = callingPid; adjAttributionSource.pid = VALUE_OR_RETURN_STATUS( legacy2aidl_pid_t_int32_t(callingPid)); } adjAttributionSource = afutils::checkAttributionSourcePackage( adjAttributionSource); } else { auto validatedAttrSource = VALUE_OR_RETURN_CONVERTED( validateAttributionFromContextOrTrustedCaller(input.clientInfo.attributionSource, getPermissionProvider() )); // TODO pass wrapped object around adjAttributionSource = std::move(validatedAttrSource).unwrapInto(); } DeviceIdVector selectedDeviceIds; audio_session_t sessionId = input.sessionId; Loading Loading @@ -1364,13 +1301,7 @@ status_t AudioFlinger::setMasterVolume(float value) } // check calling permissions if (audioserver_permissions()) { VALUE_OR_RETURN_CONVERTED(enforceCallingPermission(MODIFY_AUDIO_SETTINGS)); } else { if (!settingsAllowed()) { return PERMISSION_DENIED; } } audio_utils::lock_guard _l(mutex()); mMasterVolume = value; Loading Loading @@ -1410,13 +1341,7 @@ status_t AudioFlinger::setMasterBalance(float balance) } // check calling permissions if (audioserver_permissions()) { VALUE_OR_RETURN_CONVERTED(enforceCallingPermission(MODIFY_AUDIO_SETTINGS)); } else { if (!settingsAllowed()) { return PERMISSION_DENIED; } } // check range if (isnan(balance) || fabs(balance) > 1.f) { Loading Loading @@ -1448,13 +1373,7 @@ status_t AudioFlinger::setMode(audio_mode_t mode) } // check calling permissions if (audioserver_permissions()) { VALUE_OR_RETURN_CONVERTED(enforceCallingPermission(MODIFY_AUDIO_SETTINGS)); } else { if (!settingsAllowed()) { return PERMISSION_DENIED; } } if (uint32_t(mode) >= AUDIO_MODE_CNT) { ALOGW("Illegal value: setMode(%d)", mode); return BAD_VALUE; Loading Loading @@ -1494,13 +1413,7 @@ status_t AudioFlinger::setMicMute(bool state) } // check calling permissions if (audioserver_permissions()) { VALUE_OR_RETURN_CONVERTED(enforceCallingPermission(MODIFY_AUDIO_SETTINGS)); } else { if (!settingsAllowed()) { return PERMISSION_DENIED; } } audio_utils::lock_guard lock(hardwareMutex()); if (mPrimaryHardwareDev == nullptr) { Loading Loading @@ -1569,13 +1482,7 @@ status_t AudioFlinger::setMasterMute(bool muted) } // check calling permissions if (audioserver_permissions()) { VALUE_OR_RETURN_CONVERTED(enforceCallingPermission(MODIFY_AUDIO_SETTINGS)); } else { if (!settingsAllowed()) { return PERMISSION_DENIED; } } audio_utils::lock_guard _l(mutex()); mMasterMute = muted; Loading Loading @@ -1871,13 +1778,7 @@ status_t AudioFlinger::setParameters(audio_io_handle_t ioHandle, const String8& IPCThreadState::self()->getCallingPid(), IPCThreadState::self()->getCallingUid()); // check calling permissions if (audioserver_permissions()) { VALUE_OR_RETURN_CONVERTED(enforceCallingPermission(MODIFY_AUDIO_SETTINGS)); } else { if (!settingsAllowed()) { return PERMISSION_DENIED; } } String8 filteredKeyValuePairs = keyValuePairs; filterReservedParameters(filteredKeyValuePairs, IPCThreadState::self()->getCallingUid()); Loading Loading @@ -2118,13 +2019,7 @@ status_t AudioFlinger::setVoiceVolume(float value) } // check calling permissions if (audioserver_permissions()) { VALUE_OR_RETURN_CONVERTED(enforceCallingPermission(MODIFY_AUDIO_SETTINGS)); } else { if (!settingsAllowed()) { return PERMISSION_DENIED; } } audio_utils::lock_guard lock(hardwareMutex()); if (mPrimaryHardwareDev == nullptr) { Loading Loading @@ -2352,32 +2247,6 @@ status_t AudioFlinger::createRecord(const media::CreateRecordRequest& _input, AttributionSourceState adjAttributionSource; pid_t callingPid = IPCThreadState::self()->getCallingPid(); if (!audioserver_permissions()) { adjAttributionSource = input.clientInfo.attributionSource; bool updatePid = (adjAttributionSource.pid == -1); const uid_t callingUid = IPCThreadState::self()->getCallingUid(); const uid_t currentUid = VALUE_OR_RETURN_STATUS(legacy2aidl_uid_t_int32_t( adjAttributionSource.uid)); if (!isAudioServerOrMediaServerOrSystemServerOrRootUid(callingUid)) { ALOGW_IF(currentUid != callingUid, "%s uid %d tried to pass itself off as %d", __FUNCTION__, callingUid, currentUid); adjAttributionSource.uid = VALUE_OR_RETURN_STATUS( legacy2aidl_uid_t_int32_t(callingUid)); updatePid = true; } const pid_t currentPid = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_pid_t( adjAttributionSource.pid)); if (updatePid) { ALOGW_IF(currentPid != (pid_t)-1 && currentPid != callingPid, "%s uid %d pid %d tried to pass itself off as pid %d", __func__, callingUid, callingPid, currentPid); adjAttributionSource.pid = VALUE_OR_RETURN_STATUS( legacy2aidl_pid_t_int32_t(callingPid)); } adjAttributionSource = afutils::checkAttributionSourcePackage( adjAttributionSource); } else { auto validatedAttrSource = VALUE_OR_RETURN_CONVERTED( validateAttributionFromContextOrTrustedCaller( input.clientInfo.attributionSource, Loading @@ -2385,7 +2254,6 @@ status_t AudioFlinger::createRecord(const media::CreateRecordRequest& _input, )); // TODO pass wrapped object around adjAttributionSource = std::move(validatedAttrSource).unwrapInto(); } // further format checks are performed by createRecordTrack_l() if (!audio_is_valid_format(input.config.format)) { Loading Loading @@ -2604,18 +2472,12 @@ audio_module_handle_t AudioFlinger::loadHwModule(const char *name) if (name == NULL) { return AUDIO_MODULE_HANDLE_NONE; } if (audioserver_permissions()) { const auto res = enforceCallingPermission(MODIFY_AUDIO_SETTINGS); if (!res.ok()) { ALOGE("Function: %s perm check result (%s)", __FUNCTION__, errorToString(res.error()).c_str()); return AUDIO_MODULE_HANDLE_NONE; } } else { if (!settingsAllowed()) { return AUDIO_MODULE_HANDLE_NONE; } } audio_utils::lock_guard _l(mutex()); audio_utils::lock_guard lock(hardwareMutex()); Loading Loading @@ -4231,20 +4093,6 @@ status_t AudioFlinger::createEffect(const media::CreateEffectRequest& request, status_t lStatus = NO_ERROR; uid_t callingUid = IPCThreadState::self()->getCallingUid(); pid_t currentPid; if (!audioserver_permissions()) { adjAttributionSource.uid = VALUE_OR_RETURN_STATUS(legacy2aidl_uid_t_int32_t(callingUid)); currentPid = VALUE_OR_RETURN_STATUS(aidl2legacy_int32_t_pid_t(adjAttributionSource.pid)); if (currentPid == -1 || !isAudioServerOrMediaServerOrSystemServerOrRootUid(callingUid)) { const pid_t callingPid = IPCThreadState::self()->getCallingPid(); ALOGW_IF(currentPid != -1 && currentPid != callingPid, "%s uid %d pid %d tried to pass itself off as pid %d", __func__, callingUid, callingPid, currentPid); adjAttributionSource.pid = VALUE_OR_RETURN_STATUS( legacy2aidl_pid_t_int32_t(callingPid)); currentPid = callingPid; } adjAttributionSource = afutils::checkAttributionSourcePackage(adjAttributionSource); } else { auto validatedAttrSource = VALUE_OR_RETURN_CONVERTED( validateAttributionFromContextOrTrustedCaller(request.attributionSource, getPermissionProvider() Loading @@ -4252,7 +4100,6 @@ status_t AudioFlinger::createEffect(const media::CreateEffectRequest& request, // TODO pass wrapped object around adjAttributionSource = std::move(validatedAttrSource).unwrapInto(); currentPid = adjAttributionSource.pid; } ALOGV("createEffect pid %d, effectClient %p, priority %d, sessionId %d, io %d, factory %p", Loading @@ -4266,7 +4113,7 @@ status_t AudioFlinger::createEffect(const media::CreateEffectRequest& request, } bool isSettingsAllowed; if (audioserver_permissions()) { { const auto res = getPermissionProvider().checkPermission( MODIFY_AUDIO_SETTINGS, IPCThreadState::self()->getCallingUid()); Loading @@ -4275,8 +4122,6 @@ status_t AudioFlinger::createEffect(const media::CreateEffectRequest& request, goto Exit; } isSettingsAllowed = res.value(); } else { isSettingsAllowed = settingsAllowed(); } // check audio settings permission for global effects Loading
services/audioflinger/AudioFlinger.h +0 −1 Original line number Diff line number Diff line Loading @@ -38,7 +38,6 @@ #include <media/IAudioPolicyServiceLocal.h> #include <media/MediaMetricsItem.h> #include <media/audiohal/DevicesFactoryHalInterface.h> #include <mediautils/ServiceUtilities.h> #include <mediautils/Synchronization.h> #include <psh_utils/AudioPowerManager.h> Loading