Allow USE_RESTRICTED_NETWORKS for registerSystemDefaultNetworkCallback
Some callers (e.g. iwlan) need to learn about system default network but they cannot have NETWORK_SETTINGS permission. To allow them to use this API but prevent from misuse by unprivileged apps, enforce USE_RESTRICTED_NETWORKS for this API. Test: atest com.android.server.ConnectivityServiceTest#testRegisterPrivilegedDefaultCallbacksRequireNetworkSettings android.net.cts.ConnectivityManagerTest#testRegisterNetworkCallback Fix: 242456635 Change-Id: I80ab27445af874328c9c0f4814a8fbf035ae5df4
This commit is contained in:
parent
3e7778805b
commit
aa4ad8c2d1
1 changed files with 29 additions and 4 deletions
|
|
@ -2800,6 +2800,13 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK);
|
||||
}
|
||||
|
||||
private void enforceSettingsOrUseRestrictedNetworksPermission() {
|
||||
enforceAnyPermissionOf(mContext,
|
||||
android.Manifest.permission.NETWORK_SETTINGS,
|
||||
NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
|
||||
Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS);
|
||||
}
|
||||
|
||||
private void enforceNetworkFactoryPermission() {
|
||||
// TODO: Check for the BLUETOOTH_STACK permission once that is in the API surface.
|
||||
if (UserHandle.getAppId(getCallingUid()) == Process.BLUETOOTH_UID) return;
|
||||
|
|
@ -6592,7 +6599,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||
enforceAccessPermission();
|
||||
break;
|
||||
case TRACK_SYSTEM_DEFAULT:
|
||||
enforceSettingsPermission();
|
||||
enforceSettingsOrUseRestrictedNetworksPermission();
|
||||
networkCapabilities = new NetworkCapabilities(defaultNc);
|
||||
break;
|
||||
case BACKGROUND_REQUEST:
|
||||
|
|
|
|||
Loading…
Reference in a new issue