diff options
-rw-r--r-- | service/java/com/android/server/wifi/WifiServiceImpl.java | 5 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java | 20 |
2 files changed, 15 insertions, 10 deletions
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java index 5a5bc1824..f1f3d6cd1 100644 --- a/service/java/com/android/server/wifi/WifiServiceImpl.java +++ b/service/java/com/android/server/wifi/WifiServiceImpl.java @@ -2299,8 +2299,9 @@ public class WifiServiceImpl extends BaseWifiService { */ @Override public boolean removePasspointConfiguration(String fqdn, String packageName) { - if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.NETWORK_SETTINGS) - != PERMISSION_GRANTED) { + final int uid = Binder.getCallingUid(); + if (!mWifiPermissionsUtil.checkNetworkSettingsPermission(uid) + && !mWifiPermissionsUtil.checkNetworkCarrierProvisioningPermission(uid)) { if (mWifiPermissionsUtil.isTargetSdkLessThan(packageName, Build.VERSION_CODES.Q)) { return false; } diff --git a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java index dff73a9a3..ca5366b30 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java @@ -2582,28 +2582,31 @@ public class WifiServiceImplTest { /** * Verify that the call to removePasspointConfiguration is not redirected to specific API - * syncRemovePasspointConfig when the caller doesn't have NETWORK_SETTINGS permission. + * syncRemovePasspointConfig when the caller doesn't have NETWORK_SETTINGS and + * NETWORK_CARRIER_PROVISIONING permission. */ @Test(expected = SecurityException.class) public void testRemovePasspointConfigurationWithOutPermissions() { - when(mContext.checkCallingOrSelfPermission( - eq(android.Manifest.permission.NETWORK_SETTINGS))).thenReturn( - PackageManager.PERMISSION_DENIED); + when(mWifiPermissionsUtil.checkNetworkSettingsPermission(anyInt())).thenReturn(false); + when(mWifiPermissionsUtil.checkNetworkCarrierProvisioningPermission(anyInt())).thenReturn( + false); mWifiServiceImpl.removePasspointConfiguration(null, null); } /** * Verify that the call to removePasspointConfiguration for apps targeting below Q SDK will - * return false if the caller doesn't have NETWORK_SETTINGS permission. + * return false if the caller doesn't have NETWORK_SETTINGS and NETWORK_CARRIER_PROVISIONING + * permission. */ @Test public void testRemovePasspointConfigurationForAppsTargetingBelowQSDK() { - when(mContext.checkCallingOrSelfPermission( - eq(android.Manifest.permission.NETWORK_SETTINGS))).thenReturn( - PackageManager.PERMISSION_DENIED); + when(mWifiPermissionsUtil.checkNetworkSettingsPermission(anyInt())).thenReturn(false); + when(mWifiPermissionsUtil.checkNetworkCarrierProvisioningPermission(anyInt())).thenReturn( + false); when(mWifiPermissionsUtil.isTargetSdkLessThan(isNull(), eq(Build.VERSION_CODES.Q))).thenReturn(true); + assertFalse(mWifiServiceImpl.removePasspointConfiguration(null, null)); } @@ -3382,6 +3385,7 @@ public class WifiServiceImplTest { when(mContext.checkPermission(eq(android.Manifest.permission.NETWORK_SETTINGS), anyInt(), anyInt())).thenReturn(PackageManager.PERMISSION_GRANTED); + when(mWifiPermissionsUtil.checkNetworkSettingsPermission(anyInt())).thenReturn(true); final String fqdn = "example.com"; WifiConfiguration network = WifiConfigurationTestUtil.createOpenNetwork(); PasspointConfiguration config = new PasspointConfiguration(); |