mirror of
https://github.com/Divested-Mobile/DivestOS-Build.git
synced 2024-12-25 23:49:32 -05:00
95 lines
4.5 KiB
Diff
95 lines
4.5 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Ling Ma <linggm@google.com>
|
||
|
Date: Tue, 3 May 2022 18:13:57 -0700
|
||
|
Subject: [PATCH] Enforce privileged phone state for
|
||
|
getSubscriptionProperty(GROUP_UUID)
|
||
|
|
||
|
Bug: 213457638
|
||
|
Test: atest
|
||
|
Change-Id: I8d7cc836402a9a7695c972860d38035c4ec0fa44
|
||
|
Merged-In: I8d7cc836402a9a7695c972860d38035c4ec0fa44
|
||
|
Merged-In: Ie8017c39a495f93603aeb5d1a335fe2fe528cf77
|
||
|
(cherry picked from commit b0e3c5d17e44b6de4ddb5e1ad0018243d38e2cc4)
|
||
|
(cherry picked from commit 12db8db9b127a3a9b414a8a09f6445c2a58f553e)
|
||
|
Merged-In: I8d7cc836402a9a7695c972860d38035c4ec0fa44
|
||
|
---
|
||
|
.../telephony/SubscriptionController.java | 18 +++++++++--
|
||
|
.../telephony/SubscriptionControllerTest.java | 30 +++++++++++++++++++
|
||
|
2 files changed, 45 insertions(+), 3 deletions(-)
|
||
|
|
||
|
diff --git a/src/java/com/android/internal/telephony/SubscriptionController.java b/src/java/com/android/internal/telephony/SubscriptionController.java
|
||
|
index 5f9458d2c8..7848367369 100644
|
||
|
--- a/src/java/com/android/internal/telephony/SubscriptionController.java
|
||
|
+++ b/src/java/com/android/internal/telephony/SubscriptionController.java
|
||
|
@@ -16,6 +16,8 @@
|
||
|
|
||
|
package com.android.internal.telephony;
|
||
|
|
||
|
+import static android.content.pm.PackageManager.PERMISSION_GRANTED;
|
||
|
+
|
||
|
import android.Manifest;
|
||
|
import android.annotation.Nullable;
|
||
|
import android.app.AppOpsManager;
|
||
|
@@ -2075,9 +2077,19 @@ public class SubscriptionController extends ISub.Stub {
|
||
|
*/
|
||
|
@Override
|
||
|
public String getSubscriptionProperty(int subId, String propKey, String callingPackage) {
|
||
|
- if (!TelephonyPermissions.checkCallingOrSelfReadPhoneState(
|
||
|
- mContext, subId, callingPackage, "getSubscriptionProperty")) {
|
||
|
- return null;
|
||
|
+ switch (propKey) {
|
||
|
+ case "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, "getSubscriptionProperty")) {
|
||
|
+ return null;
|
||
|
+ }
|
||
|
}
|
||
|
String resultValue = null;
|
||
|
ContentResolver resolver = mContext.getContentResolver();
|
||
|
diff --git a/tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java b/tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java
|
||
|
index ef9f7d4b86..358fddbe94 100644
|
||
|
--- a/tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java
|
||
|
+++ b/tests/telephonytests/src/com/android/internal/telephony/SubscriptionControllerTest.java
|
||
|
@@ -422,4 +422,34 @@ public class SubscriptionControllerTest extends TelephonyTest {
|
||
|
SubscriptionManager.WFC_IMS_ROAMING_MODE,
|
||
|
mCallingPackage));
|
||
|
}
|
||
|
+
|
||
|
+ @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());
|
||
|
+
|
||
|
+ assertNotEquals(null, prop);
|
||
|
+
|
||
|
+ // group UUID requires privileged phone state permission
|
||
|
+ prop = mSubscriptionControllerUT.getSubscriptionProperty(1, SubscriptionManager.GROUP_UUID,
|
||
|
+ mContext.getOpPackageName());
|
||
|
+ 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());
|
||
|
+ assertNotEquals(null, prop);
|
||
|
+ }
|
||
|
}
|