Merge "Add MATCH_ANY_USER flag to PackageInfo queries" am: 68301eb7cb am: 2b0351ce1e

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1689207

Change-Id: I44318046f675749fe056fa253da3d48c88129441
This commit is contained in:
Paul Hu
2021-05-12 09:56:19 +00:00
committed by Automerger Merge Worker
3 changed files with 18 additions and 13 deletions

View File

@@ -338,7 +338,8 @@ public class PermissionMonitor {
return currentPermission; return currentPermission;
} }
try { try {
final PackageInfo app = mPackageManager.getPackageInfo(name, GET_PERMISSIONS); final PackageInfo app = mPackageManager.getPackageInfo(name,
GET_PERMISSIONS | MATCH_ANY_USER);
final boolean isNetwork = hasNetworkPermission(app); final boolean isNetwork = hasNetworkPermission(app);
final boolean hasRestrictedPermission = hasRestrictedNetworkPermission(app); final boolean hasRestrictedPermission = hasRestrictedNetworkPermission(app);
if (isNetwork || hasRestrictedPermission) { if (isNetwork || hasRestrictedPermission) {
@@ -664,6 +665,7 @@ public class PermissionMonitor {
break; break;
case INetd.PERMISSION_UNINSTALLED: case INetd.PERMISSION_UNINSTALLED:
uninstalledAppIds.add(netdPermissionsAppIds.keyAt(i)); uninstalledAppIds.add(netdPermissionsAppIds.keyAt(i));
break;
default: default:
Log.e(TAG, "unknown permission type: " + permissions + "for uid: " Log.e(TAG, "unknown permission type: " + permissions + "for uid: "
+ netdPermissionsAppIds.keyAt(i)); + netdPermissionsAppIds.keyAt(i));

View File

@@ -2809,8 +2809,9 @@ public class ConnectivityServiceTest {
private void grantUsingBackgroundNetworksPermissionForUid( private void grantUsingBackgroundNetworksPermissionForUid(
final int uid, final String packageName) throws Exception { final int uid, final String packageName) throws Exception {
when(mPackageManager.getPackageInfo(eq(packageName), eq(GET_PERMISSIONS))) when(mPackageManager.getPackageInfo(
.thenReturn(buildPackageInfo(true, uid)); eq(packageName), eq(GET_PERMISSIONS | MATCH_ANY_USER)))
.thenReturn(buildPackageInfo(true /* hasSystemPermission */, uid));
mService.mPermissionMonitor.onPackageAdded(packageName, uid); mService.mPermissionMonitor.onPackageAdded(packageName, uid);
} }

View File

@@ -479,13 +479,14 @@ public class PermissionMonitorTest {
public void testUidFilteringDuringVpnConnectDisconnectAndUidUpdates() throws Exception { public void testUidFilteringDuringVpnConnectDisconnectAndUidUpdates() throws Exception {
when(mPackageManager.getInstalledPackages(eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn( when(mPackageManager.getInstalledPackages(eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn(
Arrays.asList(new PackageInfo[] { Arrays.asList(new PackageInfo[] {
buildPackageInfo(/* SYSTEM */ true, SYSTEM_UID1, MOCK_USER1), buildPackageInfo(true /* hasSystemPermission */, SYSTEM_UID1, MOCK_USER1),
buildPackageInfo(/* SYSTEM */ false, MOCK_UID1, MOCK_USER1), buildPackageInfo(false /* hasSystemPermission */, MOCK_UID1, MOCK_USER1),
buildPackageInfo(/* SYSTEM */ false, MOCK_UID2, MOCK_USER1), buildPackageInfo(false /* hasSystemPermission */, MOCK_UID2, MOCK_USER1),
buildPackageInfo(/* SYSTEM */ false, VPN_UID, MOCK_USER1) buildPackageInfo(false /* hasSystemPermission */, VPN_UID, MOCK_USER1)
})); }));
when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1), eq(GET_PERMISSIONS))).thenReturn( when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1),
buildPackageInfo(false, MOCK_UID1, MOCK_USER1)); eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn(
buildPackageInfo(false /* hasSystemPermission */, MOCK_UID1, MOCK_USER1));
mPermissionMonitor.startMonitoring(); mPermissionMonitor.startMonitoring();
// Every app on user 0 except MOCK_UID2 are under VPN. // Every app on user 0 except MOCK_UID2 are under VPN.
final Set<UidRange> vpnRange1 = new HashSet<>(Arrays.asList(new UidRange[] { final Set<UidRange> vpnRange1 = new HashSet<>(Arrays.asList(new UidRange[] {
@@ -530,11 +531,12 @@ public class PermissionMonitorTest {
public void testUidFilteringDuringPackageInstallAndUninstall() throws Exception { public void testUidFilteringDuringPackageInstallAndUninstall() throws Exception {
when(mPackageManager.getInstalledPackages(eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn( when(mPackageManager.getInstalledPackages(eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn(
Arrays.asList(new PackageInfo[] { Arrays.asList(new PackageInfo[] {
buildPackageInfo(true, SYSTEM_UID1, MOCK_USER1), buildPackageInfo(true /* hasSystemPermission */, SYSTEM_UID1, MOCK_USER1),
buildPackageInfo(false, VPN_UID, MOCK_USER1) buildPackageInfo(false /* hasSystemPermission */, VPN_UID, MOCK_USER1)
})); }));
when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1), eq(GET_PERMISSIONS))).thenReturn( when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1),
buildPackageInfo(false, MOCK_UID1, MOCK_USER1)); eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn(
buildPackageInfo(false /* hasSystemPermission */, MOCK_UID1, MOCK_USER1));
mPermissionMonitor.startMonitoring(); mPermissionMonitor.startMonitoring();
final Set<UidRange> vpnRange = Collections.singleton(UidRange.createForUser(MOCK_USER1)); final Set<UidRange> vpnRange = Collections.singleton(UidRange.createForUser(MOCK_USER1));