aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-07-06 20:00:12 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2022-07-06 20:00:12 +0000
commit30f800fc7af6aa7ef34666df112c7f2741e627c1 (patch)
tree1d3fbef545b67e96c6fd6001721707643036ca22
parentbee309de43c61e22fcf2d1b8331616e26598f6e2 (diff)
parent2efd4c130db6f69fca27800200c1f8b7e21165bf (diff)
downloadtelephony-android11-gsi.tar.gz
Merge "Merge cherrypicks of [18168006] into rvc-platform-release. am: 8a7741904c" into android11-gsiandroid11-gsi
-rw-r--r--src/java/com/android/internal/telephony/SubscriptionController.java16
-rw-r--r--tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java31
2 files changed, 44 insertions, 3 deletions
diff --git a/src/java/com/android/internal/telephony/SubscriptionController.java b/src/java/com/android/internal/telephony/SubscriptionController.java
index 5cd27d3031..25dbf8cb06 100644
--- a/src/java/com/android/internal/telephony/SubscriptionController.java
+++ b/src/java/com/android/internal/telephony/SubscriptionController.java
@@ -3029,9 +3029,19 @@ public class SubscriptionController extends ISub.Stub {
@Override
public String getSubscriptionProperty(int subId, String propKey, String callingPackage,
String callingFeatureId) {
- if (!TelephonyPermissions.checkCallingOrSelfReadPhoneState(mContext, subId, callingPackage,
- callingFeatureId, "getSubscriptionProperty")) {
- return null;
+ switch (propKey) {
+ case SubscriptionManager.GROUP_UUID:
+ if (mContext.checkCallingOrSelfPermission(
+ Manifest.permission.READ_PRIVILEGED_PHONE_STATE) != PERMISSION_GRANTED) {
+ EventLog.writeEvent(0x534e4554, "213457638", Binder.getCallingUid());
+ return null;
+ }
+ break;
+ default:
+ if (!TelephonyPermissions.checkCallingOrSelfReadPhoneState(mContext, subId,
+ callingPackage, callingFeatureId, "getSubscriptionProperty")) {
+ return null;
+ }
}
final long identity = Binder.clearCallingIdentity();
diff --git a/tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java
index 4d10b0a71f..aeb0c8bf33 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java
@@ -953,6 +953,37 @@ public class SubscriptionControllerTest extends TelephonyTest {
@Test
@SmallTest
+ public void testGetSubscriptionProperty() throws Exception {
+ testInsertSim();
+ ContentValues values = new ContentValues();
+ values.put(SubscriptionManager.GROUP_UUID, 1);
+ mFakeTelephonyProvider.update(SubscriptionManager.CONTENT_URI, values,
+ SubscriptionManager.UNIQUE_KEY_SUBSCRIPTION_ID + "=" + 1, null);
+
+ mContextFixture.removeCallingOrSelfPermission(ContextFixture.PERMISSION_ENABLE_ALL);
+ mContextFixture.addCallingOrSelfPermission(Manifest.permission.READ_PHONE_STATE);
+
+ // should succeed with read phone state permission
+ String prop = mSubscriptionControllerUT.getSubscriptionProperty(1,
+ SubscriptionManager.CB_EXTREME_THREAT_ALERT, mContext.getOpPackageName(),
+ mContext.getAttributionTag());
+
+ assertNotEquals(null, prop);
+
+ // group UUID requires privileged phone state permission
+ prop = mSubscriptionControllerUT.getSubscriptionProperty(1, SubscriptionManager.GROUP_UUID,
+ mContext.getOpPackageName(), mContext.getAttributionTag());
+ assertEquals(null, prop);
+
+ // group UUID should succeed once privileged phone state permission is granted
+ mContextFixture.addCallingOrSelfPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE);
+ prop = mSubscriptionControllerUT.getSubscriptionProperty(1, SubscriptionManager.GROUP_UUID,
+ mContext.getOpPackageName(), mContext.getAttributionTag());
+ assertNotEquals(null, prop);
+ }
+
+ @Test
+ @SmallTest
public void testCreateSubscriptionGroupWithCarrierPrivilegePermission() throws Exception {
testInsertSim();
// Adding a second profile and mark as embedded.