Loading media/audioaidlconversion/AidlConversionCppNdk.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -1064,7 +1064,7 @@ namespace { // Use '01' for LSB bits 0 and 1 as Bluetooth MAC addresses are never multicast // and universaly administered constexpr std::array<uint8_t, 4> BTANON_PREFIX {0xFD, 0xFF, 0xFF, 0xFF}; // Keep sync with ServiceUtilities.cpp mustAnonymizeBluetoothAddress // Keep sync with ServiceUtilities.cpp anonymizeBluetoothAddress constexpr const char * BTANON_PREFIX_STR = "XX:XX:XX:XX:"; } Loading media/utils/ServiceUtilities.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -544,7 +544,7 @@ bool checkBluetoothPermission(const AttributionSourceState& attr) { * @param caller string identifying the caller for logging. * @return true if the MAC addresses must be anonymized, false otherwise. */ bool mustAnonymizeBluetoothAddress( bool mustAnonymizeBluetoothAddressLegacy( const AttributionSourceState& attributionSource, const String16&) { uid_t uid = VALUE_OR_FATAL(aidl2legacy_int32_t_uid_t(attributionSource.uid)); bool res; Loading media/utils/include/mediautils/ServiceUtilities.h +1 −1 Original line number Diff line number Diff line Loading @@ -116,7 +116,7 @@ bool modifyPhoneStateAllowed(const AttributionSourceState& attributionSource); bool bypassInterruptionPolicyAllowed(const AttributionSourceState& attributionSource); bool callAudioInterceptionAllowed(const AttributionSourceState& attributionSource); void purgePermissionCache(); bool mustAnonymizeBluetoothAddress( bool mustAnonymizeBluetoothAddressLegacy( const AttributionSourceState& attributionSource, const String16& caller); void anonymizeBluetoothAddress(char *address); Loading services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp +29 −3 Original line number Diff line number Diff line Loading @@ -78,6 +78,7 @@ using com::android::media::permission::PermissionEnum::MODIFY_DEFAULT_AUDIO_EFFE using com::android::media::permission::PermissionEnum::MODIFY_PHONE_STATE; using com::android::media::permission::PermissionEnum::RECORD_AUDIO; using com::android::media::permission::PermissionEnum::WRITE_SECURE_SETTINGS; using com::android::media::permission::PermissionEnum::BLUETOOTH_CONNECT; using com::android::media::permission::PermissionEnum::BYPASS_CONCURRENT_RECORD_AUDIO_RESTRICTION; using content::AttributionSourceState; using media::audio::common::AudioConfig; Loading @@ -98,6 +99,28 @@ constexpr int kDefaultVirtualDeviceId = 0; namespace { constexpr auto PERMISSION_HARD_DENIED = permission::PermissionChecker::PERMISSION_HARD_DENIED; constexpr auto PERMISSION_GRANTED = permission::PermissionChecker::PERMISSION_GRANTED; bool mustAnonymizeBluetoothAddress(const AttributionSourceState& attributionSource, const String16& caller, const IPermissionProvider& provider) { if (audioserver_permissions()) { switch(multiuser_get_app_id(attributionSource.uid)) { // out of caution, to prevent regression case AID_RADIO: case AID_BLUETOOTH: case AID_MEDIA: return true; } const auto res = provider.checkPermission(BLUETOOTH_CONNECT, attributionSource.uid); if (!res.has_value()) { ALOGE("%s: error: %s", __func__, res.error().toString8().c_str()); } return *res; } else { return mustAnonymizeBluetoothAddressLegacy(attributionSource, caller); } } } const std::vector<audio_usage_t>& SYSTEM_USAGES = { Loading Loading @@ -1781,7 +1804,8 @@ Status AudioPolicyService::listAudioPorts(media::AudioPortRole roleAidl, numPortsReq = std::min(numPortsReq, num_ports); } if (mustAnonymizeBluetoothAddress(attributionSource, String16(__func__))) { if (mustAnonymizeBluetoothAddress(attributionSource, String16(__func__), getPermissionProvider())) { for (size_t i = 0; i < numPortsReq; ++i) { anonymizePortBluetoothAddress(ports[i]); } Loading Loading @@ -1823,7 +1847,8 @@ Status AudioPolicyService::getAudioPort(int portId, RETURN_IF_BINDER_ERROR(binderStatusFromStatusT(mAudioPolicyManager->getAudioPort(&port))); } if (mustAnonymizeBluetoothAddress(attributionSource, String16(__func__))) { if (mustAnonymizeBluetoothAddress(attributionSource, String16(__func__), getPermissionProvider())) { anonymizePortBluetoothAddress(port); } Loading Loading @@ -1903,7 +1928,8 @@ Status AudioPolicyService::listAudioPatches(Int* count, numPatchesReq = std::min(numPatchesReq, num_patches); } if (mustAnonymizeBluetoothAddress(attributionSource, String16(__func__))) { if (mustAnonymizeBluetoothAddress(attributionSource, String16(__func__), getPermissionProvider())) { for (size_t i = 0; i < numPatchesReq; ++i) { for (size_t j = 0; j < patches[i].num_sources; ++j) { anonymizePortBluetoothAddress(patches[i].sources[j]); Loading Loading
media/audioaidlconversion/AidlConversionCppNdk.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -1064,7 +1064,7 @@ namespace { // Use '01' for LSB bits 0 and 1 as Bluetooth MAC addresses are never multicast // and universaly administered constexpr std::array<uint8_t, 4> BTANON_PREFIX {0xFD, 0xFF, 0xFF, 0xFF}; // Keep sync with ServiceUtilities.cpp mustAnonymizeBluetoothAddress // Keep sync with ServiceUtilities.cpp anonymizeBluetoothAddress constexpr const char * BTANON_PREFIX_STR = "XX:XX:XX:XX:"; } Loading
media/utils/ServiceUtilities.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -544,7 +544,7 @@ bool checkBluetoothPermission(const AttributionSourceState& attr) { * @param caller string identifying the caller for logging. * @return true if the MAC addresses must be anonymized, false otherwise. */ bool mustAnonymizeBluetoothAddress( bool mustAnonymizeBluetoothAddressLegacy( const AttributionSourceState& attributionSource, const String16&) { uid_t uid = VALUE_OR_FATAL(aidl2legacy_int32_t_uid_t(attributionSource.uid)); bool res; Loading
media/utils/include/mediautils/ServiceUtilities.h +1 −1 Original line number Diff line number Diff line Loading @@ -116,7 +116,7 @@ bool modifyPhoneStateAllowed(const AttributionSourceState& attributionSource); bool bypassInterruptionPolicyAllowed(const AttributionSourceState& attributionSource); bool callAudioInterceptionAllowed(const AttributionSourceState& attributionSource); void purgePermissionCache(); bool mustAnonymizeBluetoothAddress( bool mustAnonymizeBluetoothAddressLegacy( const AttributionSourceState& attributionSource, const String16& caller); void anonymizeBluetoothAddress(char *address); Loading
services/audiopolicy/service/AudioPolicyInterfaceImpl.cpp +29 −3 Original line number Diff line number Diff line Loading @@ -78,6 +78,7 @@ using com::android::media::permission::PermissionEnum::MODIFY_DEFAULT_AUDIO_EFFE using com::android::media::permission::PermissionEnum::MODIFY_PHONE_STATE; using com::android::media::permission::PermissionEnum::RECORD_AUDIO; using com::android::media::permission::PermissionEnum::WRITE_SECURE_SETTINGS; using com::android::media::permission::PermissionEnum::BLUETOOTH_CONNECT; using com::android::media::permission::PermissionEnum::BYPASS_CONCURRENT_RECORD_AUDIO_RESTRICTION; using content::AttributionSourceState; using media::audio::common::AudioConfig; Loading @@ -98,6 +99,28 @@ constexpr int kDefaultVirtualDeviceId = 0; namespace { constexpr auto PERMISSION_HARD_DENIED = permission::PermissionChecker::PERMISSION_HARD_DENIED; constexpr auto PERMISSION_GRANTED = permission::PermissionChecker::PERMISSION_GRANTED; bool mustAnonymizeBluetoothAddress(const AttributionSourceState& attributionSource, const String16& caller, const IPermissionProvider& provider) { if (audioserver_permissions()) { switch(multiuser_get_app_id(attributionSource.uid)) { // out of caution, to prevent regression case AID_RADIO: case AID_BLUETOOTH: case AID_MEDIA: return true; } const auto res = provider.checkPermission(BLUETOOTH_CONNECT, attributionSource.uid); if (!res.has_value()) { ALOGE("%s: error: %s", __func__, res.error().toString8().c_str()); } return *res; } else { return mustAnonymizeBluetoothAddressLegacy(attributionSource, caller); } } } const std::vector<audio_usage_t>& SYSTEM_USAGES = { Loading Loading @@ -1781,7 +1804,8 @@ Status AudioPolicyService::listAudioPorts(media::AudioPortRole roleAidl, numPortsReq = std::min(numPortsReq, num_ports); } if (mustAnonymizeBluetoothAddress(attributionSource, String16(__func__))) { if (mustAnonymizeBluetoothAddress(attributionSource, String16(__func__), getPermissionProvider())) { for (size_t i = 0; i < numPortsReq; ++i) { anonymizePortBluetoothAddress(ports[i]); } Loading Loading @@ -1823,7 +1847,8 @@ Status AudioPolicyService::getAudioPort(int portId, RETURN_IF_BINDER_ERROR(binderStatusFromStatusT(mAudioPolicyManager->getAudioPort(&port))); } if (mustAnonymizeBluetoothAddress(attributionSource, String16(__func__))) { if (mustAnonymizeBluetoothAddress(attributionSource, String16(__func__), getPermissionProvider())) { anonymizePortBluetoothAddress(port); } Loading Loading @@ -1903,7 +1928,8 @@ Status AudioPolicyService::listAudioPatches(Int* count, numPatchesReq = std::min(numPatchesReq, num_patches); } if (mustAnonymizeBluetoothAddress(attributionSource, String16(__func__))) { if (mustAnonymizeBluetoothAddress(attributionSource, String16(__func__), getPermissionProvider())) { for (size_t i = 0; i < numPatchesReq; ++i) { for (size_t j = 0; j < patches[i].num_sources; ++j) { anonymizePortBluetoothAddress(patches[i].sources[j]); Loading