From dcea3c5d4d0eb7542ce8693f09d578334b11889a Mon Sep 17 00:00:00 2001 From: Jackal Guo Date: Mon, 31 May 2021 08:01:32 +0000 Subject: [PATCH 1/3] Revert "Use userId to query the package uid instead of 0." Revert "Ensure getting UID/GID checks the installed state" Revert submission 14700843-b186180067_main Reason for revert: Break WM presubmit (b/189728752) Reverted Changes: I3d7c35dc2:Add the checking of the package installed state I035eeca76:Ensure getting UID/GID checks the installed state Iaac8e56f3:Use userId to query the package uid instead of 0. I0c452d880:Add MATCH_ANY_USER flag when get valid package uid... Change-Id: Id961177c1b533d8fd8e3e46486d8235690bad7bb --- .../core/java/com/android/server/am/ActivityManagerService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index b2be61ac48606..44c64ef96d3fa 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -4137,7 +4137,7 @@ public class ActivityManagerService extends IActivityManager.Stub if (appId < 0 && packageName != null) { try { appId = UserHandle.getAppId(AppGlobals.getPackageManager() - .getPackageUid(packageName, MATCH_DEBUG_TRIAGED_MISSING, userId)); + .getPackageUid(packageName, MATCH_DEBUG_TRIAGED_MISSING, 0)); } catch (RemoteException e) { } } From 981d9955fde6cc71c7fe2a9ef00d81a532f41183 Mon Sep 17 00:00:00 2001 From: Jackal Guo Date: Mon, 31 May 2021 08:01:32 +0000 Subject: [PATCH 2/3] Revert "Add MATCH_ANY_USER flag when get valid package uid" Revert "Ensure getting UID/GID checks the installed state" Revert submission 14700843-b186180067_main Reason for revert: Break WM presubmit (b/189728752) Reverted Changes: I3d7c35dc2:Add the checking of the package installed state I035eeca76:Ensure getting UID/GID checks the installed state Iaac8e56f3:Use userId to query the package uid instead of 0. I0c452d880:Add MATCH_ANY_USER flag when get valid package uid... Change-Id: Icdecda29da253cb14ab8294c16dab3ad03d97256 --- .../server/accessibility/AccessibilitySecurityPolicy.java | 4 +--- .../server/accessibility/AccessibilitySecurityPolicyTest.java | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java b/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java index 565193a8ad952..dc2628f0bc0bf 100644 --- a/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java +++ b/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java @@ -444,10 +444,8 @@ public class AccessibilitySecurityPolicy { private boolean isValidPackageForUid(String packageName, int uid) { final long token = Binder.clearCallingIdentity(); try { - // Since we treat calls from a profile as if made by its parent, using - // MATCH_ANY_USER to query the uid of the given package name. return uid == mPackageManager.getPackageUidAsUser( - packageName, PackageManager.MATCH_ANY_USER, UserHandle.getUserId(uid)); + packageName, UserHandle.getUserId(uid)); } catch (PackageManager.NameNotFoundException e) { return false; } finally { diff --git a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilitySecurityPolicyTest.java b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilitySecurityPolicyTest.java index 5e8e3f14f9c5d..ee00cb24a991e 100644 --- a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilitySecurityPolicyTest.java +++ b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilitySecurityPolicyTest.java @@ -261,8 +261,8 @@ public class AccessibilitySecurityPolicyTest { @Test public void resolveValidReportedPackage_uidAndPkgNameMatched_returnPkgName() throws PackageManager.NameNotFoundException { - when(mMockPackageManager.getPackageUidAsUser(PACKAGE_NAME, - PackageManager.MATCH_ANY_USER, TEST_USER_ID)).thenReturn(APP_UID); + when(mMockPackageManager.getPackageUidAsUser(PACKAGE_NAME, TEST_USER_ID)) + .thenReturn(APP_UID); assertEquals(mA11ySecurityPolicy.resolveValidReportedPackageLocked( PACKAGE_NAME, APP_UID, TEST_USER_ID, APP_PID), From 637ec21af712c35420d18e220f4c80943306b73e Mon Sep 17 00:00:00 2001 From: Jackal Guo Date: Mon, 31 May 2021 08:01:32 +0000 Subject: [PATCH 3/3] Revert "Add the checking of the package installed state" Revert "Ensure getting UID/GID checks the installed state" Revert submission 14700843-b186180067_main Reason for revert: Break WM presubmit (b/189728752) Reverted Changes: I3d7c35dc2:Add the checking of the package installed state I035eeca76:Ensure getting UID/GID checks the installed state Iaac8e56f3:Use userId to query the package uid instead of 0. I0c452d880:Add MATCH_ANY_USER flag when get valid package uid... Change-Id: I37ae40cc25b76b4e7318531400b0c12711bf01b1 --- .../server/pm/PackageManagerService.java | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 8535129b9cd13..1fc9fc2af7348 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -4215,11 +4215,11 @@ public class PackageManagerService extends IPackageManager.Stub // reader final AndroidPackage p = mPackages.get(packageName); if (p != null && AndroidPackageUtils.isMatchForSystemOnly(p, flags)) { - final PackageSetting ps = getPackageSettingInternal(p.getPackageName(), callingUid); - if (ps != null && ps.getInstalled(userId) - && !shouldFilterApplicationLocked(ps, callingUid, userId)) { - return UserHandle.getUid(userId, p.getUid()); + PackageSetting ps = getPackageSettingInternal(p.getPackageName(), callingUid); + if (shouldFilterApplicationLocked(ps, callingUid, userId)) { + return -1; } + return UserHandle.getUid(userId, p.getUid()); } if ((flags & MATCH_KNOWN_PACKAGES) != 0) { final PackageSetting ps = mSettings.getPackageLPr(packageName); @@ -8579,11 +8579,13 @@ public class PackageManagerService extends IPackageManager.Stub synchronized (mLock) { final AndroidPackage p = mPackages.get(packageName); if (p != null && AndroidPackageUtils.isMatchForSystemOnly(p, flags)) { - final PackageSetting ps = getPackageSetting(p.getPackageName()); - if (ps != null && ps.getInstalled(userId) - && !shouldFilterApplicationLocked(ps, callingUid, userId)) { - return mPermissionManager.getGidsForUid(UserHandle.getUid(userId, ps.appId)); + PackageSetting ps = getPackageSetting(p.getPackageName()); + if (shouldFilterApplicationLocked(ps, callingUid, userId)) { + return null; } + // TODO: Shouldn't this be checking for package installed state for userId and + // return null? + return mPermissionManager.getGidsForUid(UserHandle.getUid(userId, ps.appId)); } if ((flags & MATCH_KNOWN_PACKAGES) != 0) { final PackageSetting ps = mSettings.getPackageLPr(packageName); @@ -12206,7 +12208,6 @@ public class PackageManagerService extends IPackageManager.Stub } } builder.append(" to access user "); - builder.append(userId); builder.append("."); return builder.toString(); }