Fetch correct sandboxsdk packageUid for a user

Currently packageUid for sdksandbox is always fetched for
user 0. This causes a failure to fetch packageUid
with Binder.callingUid() when invoked for a different user.

Bug: b/246514935
Test: Manual
Change-Id: I30796637fdfb638d9952d5bf35ccedc6ab0097f0
This commit is contained in:
Shiwangi Shah
2022-09-15 11:48:51 +00:00
parent de2e7c4348
commit 83e921029c

View File

@@ -4593,9 +4593,8 @@ public class AppOpsService extends IAppOpsService.Stub {
final PackageManager pm = mContext.getPackageManager();
final String supplementalPackageName = pm.getSdkSandboxPackageName();
if (Objects.equals(packageName, supplementalPackageName)) {
int supplementalAppId = pm.getPackageUid(supplementalPackageName,
PackageManager.PackageInfoFlags.of(0));
uid = UserHandle.getUid(UserHandle.getUserId(uid), supplementalAppId);
uid = pm.getPackageUidAsUser(supplementalPackageName,
PackageManager.PackageInfoFlags.of(0), UserHandle.getUserId(uid));
}
} catch (PackageManager.NameNotFoundException e) {
// Shouldn't happen for the supplemental package