Loading src/java/com/android/internal/telephony/SubscriptionController.java +13 −3 Original line number Diff line number Diff line Loading @@ -3262,10 +3262,20 @@ 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")) { 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(); try { Loading tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java +31 −0 Original line number Diff line number Diff line Loading @@ -971,6 +971,37 @@ public class SubscriptionControllerTest extends TelephonyTest { assertNotEquals(groupId, newGroupId); } @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 { Loading Loading
src/java/com/android/internal/telephony/SubscriptionController.java +13 −3 Original line number Diff line number Diff line Loading @@ -3262,10 +3262,20 @@ 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")) { 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(); try { Loading
tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java +31 −0 Original line number Diff line number Diff line Loading @@ -971,6 +971,37 @@ public class SubscriptionControllerTest extends TelephonyTest { assertNotEquals(groupId, newGroupId); } @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 { Loading