From 2066ebde190f8b7237037eedbc9bd5422b3a4d46 Mon Sep 17 00:00:00 2001 From: Charles Chen Date: Wed, 22 Mar 2023 23:10:21 +0000 Subject: [PATCH] Allow package names to be retrieved for HotwordDetectionService There are some system service we wish to provide to isolated_compute_app to enable more efficient calculation in the isolated UID context. HotwordDetectionService is currently one and the only one requiring this capability. Some AGSA implemetions performs whitelisting on the package name thus we need to get the correct mapping of the uids. Bug: 274535894 Test: sample app in isolated process can retrieve package name Change-Id: Ieffa687c5bf6b2c8db5fbcf5761bc20676c7f1cf --- .../java/com/android/server/pm/ComputerEngine.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/services/core/java/com/android/server/pm/ComputerEngine.java b/services/core/java/com/android/server/pm/ComputerEngine.java index 6f7ce80e42b1c..1aa1fd10b00e5 100644 --- a/services/core/java/com/android/server/pm/ComputerEngine.java +++ b/services/core/java/com/android/server/pm/ComputerEngine.java @@ -4298,6 +4298,11 @@ public class ComputerEngine implements Computer { if (Process.isSdkSandboxUid(uid)) { uid = getBaseSdkSandboxUid(); } + if (Process.isIsolatedUid(uid) + && mPermissionManager.getHotwordDetectionServiceProvider() != null + && uid == mPermissionManager.getHotwordDetectionServiceProvider().getUid()) { + uid = getIsolatedOwner(uid); + } final int callingUserId = UserHandle.getUserId(callingUid); final int appId = UserHandle.getAppId(uid); final Object obj = mSettings.getSettingBase(appId); @@ -4334,6 +4339,11 @@ public class ComputerEngine implements Computer { if (Process.isSdkSandboxUid(uid)) { uid = getBaseSdkSandboxUid(); } + if (Process.isIsolatedUid(uid) + && mPermissionManager.getHotwordDetectionServiceProvider() != null + && uid == mPermissionManager.getHotwordDetectionServiceProvider().getUid()) { + uid = getIsolatedOwner(uid); + } final int appId = UserHandle.getAppId(uid); final Object obj = mSettings.getSettingBase(appId); if (obj instanceof SharedUserSetting) {