Loading services/core/java/com/android/server/connectivity/PermissionMonitor.java +3 −1 Original line number Diff line number Diff line Loading @@ -338,7 +338,8 @@ public class PermissionMonitor { return currentPermission; } 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 hasRestrictedPermission = hasRestrictedNetworkPermission(app); if (isNetwork || hasRestrictedPermission) { Loading Loading @@ -664,6 +665,7 @@ public class PermissionMonitor { break; case INetd.PERMISSION_UNINSTALLED: uninstalledAppIds.add(netdPermissionsAppIds.keyAt(i)); break; default: Log.e(TAG, "unknown permission type: " + permissions + "for uid: " + netdPermissionsAppIds.keyAt(i)); Loading tests/net/java/com/android/server/ConnectivityServiceTest.java +3 −2 Original line number Diff line number Diff line Loading @@ -2809,8 +2809,9 @@ public class ConnectivityServiceTest { private void grantUsingBackgroundNetworksPermissionForUid( final int uid, final String packageName) throws Exception { when(mPackageManager.getPackageInfo(eq(packageName), eq(GET_PERMISSIONS))) .thenReturn(buildPackageInfo(true, uid)); when(mPackageManager.getPackageInfo( eq(packageName), eq(GET_PERMISSIONS | MATCH_ANY_USER))) .thenReturn(buildPackageInfo(true /* hasSystemPermission */, uid)); mService.mPermissionMonitor.onPackageAdded(packageName, uid); } Loading tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java +12 −10 Original line number Diff line number Diff line Loading @@ -479,13 +479,14 @@ public class PermissionMonitorTest { public void testUidFilteringDuringVpnConnectDisconnectAndUidUpdates() throws Exception { when(mPackageManager.getInstalledPackages(eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn( Arrays.asList(new PackageInfo[] { buildPackageInfo(/* SYSTEM */ true, SYSTEM_UID1, MOCK_USER1), buildPackageInfo(/* SYSTEM */ false, MOCK_UID1, MOCK_USER1), buildPackageInfo(/* SYSTEM */ false, MOCK_UID2, MOCK_USER1), buildPackageInfo(/* SYSTEM */ false, VPN_UID, MOCK_USER1) buildPackageInfo(true /* hasSystemPermission */, SYSTEM_UID1, MOCK_USER1), buildPackageInfo(false /* hasSystemPermission */, MOCK_UID1, MOCK_USER1), buildPackageInfo(false /* hasSystemPermission */, MOCK_UID2, MOCK_USER1), buildPackageInfo(false /* hasSystemPermission */, VPN_UID, MOCK_USER1) })); when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1), eq(GET_PERMISSIONS))).thenReturn( buildPackageInfo(false, MOCK_UID1, MOCK_USER1)); when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1), eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn( buildPackageInfo(false /* hasSystemPermission */, MOCK_UID1, MOCK_USER1)); mPermissionMonitor.startMonitoring(); // Every app on user 0 except MOCK_UID2 are under VPN. final Set<UidRange> vpnRange1 = new HashSet<>(Arrays.asList(new UidRange[] { Loading Loading @@ -530,11 +531,12 @@ public class PermissionMonitorTest { public void testUidFilteringDuringPackageInstallAndUninstall() throws Exception { when(mPackageManager.getInstalledPackages(eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn( Arrays.asList(new PackageInfo[] { buildPackageInfo(true, SYSTEM_UID1, MOCK_USER1), buildPackageInfo(false, VPN_UID, MOCK_USER1) buildPackageInfo(true /* hasSystemPermission */, SYSTEM_UID1, MOCK_USER1), buildPackageInfo(false /* hasSystemPermission */, VPN_UID, MOCK_USER1) })); when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1), eq(GET_PERMISSIONS))).thenReturn( buildPackageInfo(false, MOCK_UID1, MOCK_USER1)); when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1), eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn( buildPackageInfo(false /* hasSystemPermission */, MOCK_UID1, MOCK_USER1)); mPermissionMonitor.startMonitoring(); final Set<UidRange> vpnRange = Collections.singleton(UidRange.createForUser(MOCK_USER1)); Loading Loading
services/core/java/com/android/server/connectivity/PermissionMonitor.java +3 −1 Original line number Diff line number Diff line Loading @@ -338,7 +338,8 @@ public class PermissionMonitor { return currentPermission; } 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 hasRestrictedPermission = hasRestrictedNetworkPermission(app); if (isNetwork || hasRestrictedPermission) { Loading Loading @@ -664,6 +665,7 @@ public class PermissionMonitor { break; case INetd.PERMISSION_UNINSTALLED: uninstalledAppIds.add(netdPermissionsAppIds.keyAt(i)); break; default: Log.e(TAG, "unknown permission type: " + permissions + "for uid: " + netdPermissionsAppIds.keyAt(i)); Loading
tests/net/java/com/android/server/ConnectivityServiceTest.java +3 −2 Original line number Diff line number Diff line Loading @@ -2809,8 +2809,9 @@ public class ConnectivityServiceTest { private void grantUsingBackgroundNetworksPermissionForUid( final int uid, final String packageName) throws Exception { when(mPackageManager.getPackageInfo(eq(packageName), eq(GET_PERMISSIONS))) .thenReturn(buildPackageInfo(true, uid)); when(mPackageManager.getPackageInfo( eq(packageName), eq(GET_PERMISSIONS | MATCH_ANY_USER))) .thenReturn(buildPackageInfo(true /* hasSystemPermission */, uid)); mService.mPermissionMonitor.onPackageAdded(packageName, uid); } Loading
tests/net/java/com/android/server/connectivity/PermissionMonitorTest.java +12 −10 Original line number Diff line number Diff line Loading @@ -479,13 +479,14 @@ public class PermissionMonitorTest { public void testUidFilteringDuringVpnConnectDisconnectAndUidUpdates() throws Exception { when(mPackageManager.getInstalledPackages(eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn( Arrays.asList(new PackageInfo[] { buildPackageInfo(/* SYSTEM */ true, SYSTEM_UID1, MOCK_USER1), buildPackageInfo(/* SYSTEM */ false, MOCK_UID1, MOCK_USER1), buildPackageInfo(/* SYSTEM */ false, MOCK_UID2, MOCK_USER1), buildPackageInfo(/* SYSTEM */ false, VPN_UID, MOCK_USER1) buildPackageInfo(true /* hasSystemPermission */, SYSTEM_UID1, MOCK_USER1), buildPackageInfo(false /* hasSystemPermission */, MOCK_UID1, MOCK_USER1), buildPackageInfo(false /* hasSystemPermission */, MOCK_UID2, MOCK_USER1), buildPackageInfo(false /* hasSystemPermission */, VPN_UID, MOCK_USER1) })); when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1), eq(GET_PERMISSIONS))).thenReturn( buildPackageInfo(false, MOCK_UID1, MOCK_USER1)); when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1), eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn( buildPackageInfo(false /* hasSystemPermission */, MOCK_UID1, MOCK_USER1)); mPermissionMonitor.startMonitoring(); // Every app on user 0 except MOCK_UID2 are under VPN. final Set<UidRange> vpnRange1 = new HashSet<>(Arrays.asList(new UidRange[] { Loading Loading @@ -530,11 +531,12 @@ public class PermissionMonitorTest { public void testUidFilteringDuringPackageInstallAndUninstall() throws Exception { when(mPackageManager.getInstalledPackages(eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn( Arrays.asList(new PackageInfo[] { buildPackageInfo(true, SYSTEM_UID1, MOCK_USER1), buildPackageInfo(false, VPN_UID, MOCK_USER1) buildPackageInfo(true /* hasSystemPermission */, SYSTEM_UID1, MOCK_USER1), buildPackageInfo(false /* hasSystemPermission */, VPN_UID, MOCK_USER1) })); when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1), eq(GET_PERMISSIONS))).thenReturn( buildPackageInfo(false, MOCK_UID1, MOCK_USER1)); when(mPackageManager.getPackageInfo(eq(MOCK_PACKAGE1), eq(GET_PERMISSIONS | MATCH_ANY_USER))).thenReturn( buildPackageInfo(false /* hasSystemPermission */, MOCK_UID1, MOCK_USER1)); mPermissionMonitor.startMonitoring(); final Set<UidRange> vpnRange = Collections.singleton(UidRange.createForUser(MOCK_USER1)); Loading