summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTreeHugger Robot <treehugger-gerrit@google.com>2019-04-12 01:46:27 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-04-12 01:46:27 +0000
commit104bb1e971778da9ff9d8efeaccde85abd6ee4b3 (patch)
tree35a08cdc59204936ddf4a033381006f3c2d3320b
parent6dd2c860de2fca829f4beab39fdad3069b10ef4c (diff)
parent94885079eeb03184ca56f8b60b694aef98ef2e8a (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.java17
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java41
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());
}
/**