Loading services/core/java/com/android/server/ConnectivityService.java +25 −1 Original line number Diff line number Diff line Loading @@ -3518,10 +3518,34 @@ public class ConnectivityService extends IConnectivityManager.Stub getCallingUid(), 0, operation)); } // In order to implement the compatibility measure for pre-M apps that call // WifiManager.enableNetwork(..., true) without also binding to that network explicitly, // WifiManager registers a network listen for the purpose of calling setProcessDefaultNetwork. // This ensures it has permission to do so. private boolean hasWifiNetworkListenPermission(NetworkCapabilities nc) { if (nc == null) { return false; } int[] transportTypes = nc.getTransportTypes(); if (transportTypes.length != 1 || transportTypes[0] != NetworkCapabilities.TRANSPORT_WIFI) { return false; } try { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.ACCESS_WIFI_STATE, "ConnectivityService"); } catch (SecurityException e) { return false; } return true; } @Override public NetworkRequest listenForNetwork(NetworkCapabilities networkCapabilities, Messenger messenger, IBinder binder) { if (!hasWifiNetworkListenPermission(networkCapabilities)) { enforceAccessPermission(); } NetworkRequest networkRequest = new NetworkRequest(new NetworkCapabilities( networkCapabilities), TYPE_NONE, nextNetworkRequestId()); Loading wifi/java/android/net/wifi/WifiManager.java +10 −2 Original line number Diff line number Diff line Loading @@ -2063,7 +2063,11 @@ public class WifiManager { .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .build(); mNetworkCallback = new PinningNetworkCallback(); try { sCM.registerNetworkCallback(request, mNetworkCallback); } catch (SecurityException e) { Log.d(TAG, "Failed to register network callback", e); } } } } Loading @@ -2072,7 +2076,11 @@ public class WifiManager { initConnectivityManager(); synchronized (sCM) { if (mNetworkCallback != null) { try { sCM.unregisterNetworkCallback(mNetworkCallback); } catch (SecurityException e) { Log.d(TAG, "Failed to unregister network callback", e); } mNetworkCallback = null; } } Loading Loading
services/core/java/com/android/server/ConnectivityService.java +25 −1 Original line number Diff line number Diff line Loading @@ -3518,10 +3518,34 @@ public class ConnectivityService extends IConnectivityManager.Stub getCallingUid(), 0, operation)); } // In order to implement the compatibility measure for pre-M apps that call // WifiManager.enableNetwork(..., true) without also binding to that network explicitly, // WifiManager registers a network listen for the purpose of calling setProcessDefaultNetwork. // This ensures it has permission to do so. private boolean hasWifiNetworkListenPermission(NetworkCapabilities nc) { if (nc == null) { return false; } int[] transportTypes = nc.getTransportTypes(); if (transportTypes.length != 1 || transportTypes[0] != NetworkCapabilities.TRANSPORT_WIFI) { return false; } try { mContext.enforceCallingOrSelfPermission( android.Manifest.permission.ACCESS_WIFI_STATE, "ConnectivityService"); } catch (SecurityException e) { return false; } return true; } @Override public NetworkRequest listenForNetwork(NetworkCapabilities networkCapabilities, Messenger messenger, IBinder binder) { if (!hasWifiNetworkListenPermission(networkCapabilities)) { enforceAccessPermission(); } NetworkRequest networkRequest = new NetworkRequest(new NetworkCapabilities( networkCapabilities), TYPE_NONE, nextNetworkRequestId()); Loading
wifi/java/android/net/wifi/WifiManager.java +10 −2 Original line number Diff line number Diff line Loading @@ -2063,7 +2063,11 @@ public class WifiManager { .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .build(); mNetworkCallback = new PinningNetworkCallback(); try { sCM.registerNetworkCallback(request, mNetworkCallback); } catch (SecurityException e) { Log.d(TAG, "Failed to register network callback", e); } } } } Loading @@ -2072,7 +2076,11 @@ public class WifiManager { initConnectivityManager(); synchronized (sCM) { if (mNetworkCallback != null) { try { sCM.unregisterNetworkCallback(mNetworkCallback); } catch (SecurityException e) { Log.d(TAG, "Failed to unregister network callback", e); } mNetworkCallback = null; } } Loading