Fix permissions on getDataEnabled.
This data was available before via TelephonyManager and ConnectivityManager.
They used different permissions. Change TM to accept either permission before
giving out this data.
bug: 15176602
Change-Id: If7b99b57571d6fdd9ff29c27adad563a2a124173
(cherry picked from commit ffbe08f9ba668d2e615f4615304d0a6f391fe748)
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index e79ad3c..8ec32bb 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -1403,13 +1403,23 @@
}
/**
- * Get whether mobile data is enabled
+ * Get whether mobile data is enabled.
+ *
+ * Note that this used to be available from ConnectivityService, gated by
+ * ACCESS_NETWORK_STATE permission, so this will accept either that or
+ * our MODIFY_PHONE_STATE.
*
* @return {@code true} if data is enabled else {@code false}
*/
@Override
public boolean getDataEnabled() {
- enforceModifyPermission();
+ try {
+ mApp.enforceCallingOrSelfPermission(android.Manifest.permission.ACCESS_NETWORK_STATE,
+ null);
+ } catch (Exception e) {
+ mApp.enforceCallingOrSelfPermission(android.Manifest.permission.MODIFY_PHONE_STATE,
+ null);
+ }
return mPhone.getDataEnabled();
}
}