diff options
author | TreeHugger Robot <treehugger-gerrit@google.com> | 2019-04-12 01:46:27 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2019-04-12 01:46:27 +0000 |
commit | 104bb1e971778da9ff9d8efeaccde85abd6ee4b3 (patch) | |
tree | 35a08cdc59204936ddf4a033381006f3c2d3320b | |
parent | 6dd2c860de2fca829f4beab39fdad3069b10ef4c (diff) | |
parent | 94885079eeb03184ca56f8b60b694aef98ef2e8a (diff) |
Merge "passpoint: add a condition for checking target SDK version against Q." into qt-dev
-rw-r--r-- | service/java/com/android/server/wifi/WifiServiceImpl.java | 17 | ||||
-rw-r--r-- | tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java | 41 |
2 files changed, 44 insertions, 14 deletions
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java index d7fa3e56d..82b7bab97 100644 --- a/service/java/com/android/server/wifi/WifiServiceImpl.java +++ b/service/java/com/android/server/wifi/WifiServiceImpl.java @@ -2325,15 +2325,18 @@ public class WifiServiceImpl extends BaseWifiService { * Return the list of the installed Passpoint configurations. * * An empty list will be returned when no configuration is installed. - * - * @return A list of {@link PasspointConfiguration} + * @param packageName String name of the calling package + * @return A list of {@link PasspointConfiguration}. */ @Override - public List<PasspointConfiguration> getPasspointConfigurations() { - if ((mContext.checkCallingOrSelfPermission(android.Manifest.permission.NETWORK_SETTINGS) - != PERMISSION_GRANTED) - && (mContext.checkSelfPermission(android.Manifest.permission.NETWORK_SETUP_WIZARD) - != PERMISSION_GRANTED)) { + public List<PasspointConfiguration> getPasspointConfigurations(String packageName) { + final int uid = Binder.getCallingUid(); + mAppOps.checkPackage(uid, packageName); + if (!mWifiPermissionsUtil.checkNetworkSettingsPermission(uid) + && !mWifiPermissionsUtil.checkNetworkSetupWizardPermission(uid)) { + if (mWifiPermissionsUtil.isTargetSdkLessThan(packageName, Build.VERSION_CODES.Q)) { + return new ArrayList<>(); + } throw new SecurityException(TAG + ": Permission denied"); } if (mVerboseLoggingEnabled) { diff --git a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java index 68e86a53d..864fbdd1e 100644 --- a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java +++ b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java @@ -2623,14 +2623,41 @@ public class WifiServiceImplTest { */ @Test(expected = SecurityException.class) public void testGetPasspointConfigurationsWithOutPermissions() { - when(mContext.checkCallingOrSelfPermission( - eq(android.Manifest.permission.NETWORK_SETTINGS))).thenReturn( - PackageManager.PERMISSION_DENIED); - when(mContext.checkSelfPermission( - eq(android.Manifest.permission.NETWORK_SETUP_WIZARD))).thenReturn( - PackageManager.PERMISSION_DENIED); + when(mWifiPermissionsUtil.checkNetworkSettingsPermission(anyInt())).thenReturn(false); + when(mWifiPermissionsUtil.checkNetworkSetupWizardPermission(anyInt())).thenReturn(false); + + mWifiServiceImpl.getPasspointConfigurations(TEST_PACKAGE_NAME); + } - mWifiServiceImpl.getPasspointConfigurations(); + /** + * Verify that getPasspointConfigurations called by apps that has invalid package will + * throw {@link SecurityException}. + */ + @Test(expected = SecurityException.class) + public void testGetPasspointConfigurationWithInvalidPackage() { + doThrow(new SecurityException()).when(mAppOpsManager).checkPackage(anyInt(), + eq(TEST_PACKAGE_NAME)); + when(mWifiPermissionsUtil.checkNetworkSettingsPermission(anyInt())).thenReturn(true); + when(mWifiPermissionsUtil.checkNetworkSetupWizardPermission(anyInt())).thenReturn(true); + + mWifiServiceImpl.getPasspointConfigurations(TEST_PACKAGE_NAME); + } + + /** + * Verify that getPasspointConfigurations called by apps targeting below Q SDK will return + * empty list if the caller doesn't have NETWORK_SETTINGS permissions and NETWORK_SETUP_WIZARD. + */ + @Test + public void testGetPasspointConfigurationForAppsTargetingBelowQSDK() { + when(mWifiPermissionsUtil.checkNetworkSettingsPermission(anyInt())).thenReturn(false); + when(mWifiPermissionsUtil.checkNetworkSetupWizardPermission(anyInt())).thenReturn(false); + when(mWifiPermissionsUtil.isTargetSdkLessThan(eq(TEST_PACKAGE_NAME), + eq(Build.VERSION_CODES.Q))).thenReturn(true); + + List<PasspointConfiguration> result = mWifiServiceImpl.getPasspointConfigurations( + TEST_PACKAGE_NAME); + assertNotNull(result); + assertEquals(0, result.size()); } /** |