Check system and phone UID in multiple-user-aware way
This CL calls TelephonyPermissions.isSystemOrPhone to make sure the UID check with Process.SYSTEM_UID and PHONE_UID are multiple-user-aware.
The logic to directly compare UID with PROCESS.XXX_UID only works for system user. For secondary users, system/phone processes run with UID prefixed with user id.
UserHandle.isSameApp helps to correctly detect the system/phone process by comparing only the App id part.
Bug: 328511085
Test: atest TelephonyProviderTests
Flag: com.android.internal.telephony.flags.support_phone_uid_check_for_multiuser
Change-Id: Id845f2d0076311e5a6b6fe7bae720889d9e12873
diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java
index bacfd8f..3633d0f 100644
--- a/services/core/java/com/android/server/TelephonyRegistry.java
+++ b/services/core/java/com/android/server/TelephonyRegistry.java
@@ -2989,7 +2989,7 @@
// Always redact location info from PhysicalChannelConfig if the registrant is from neither
// PHONE nor SYSTEM process. There is no user case that the registrant needs the location
// info (e.g. physicalCellId). This also remove the need for the location permissions check.
- return record.callerUid != Process.PHONE_UID && record.callerUid != Process.SYSTEM_UID;
+ return !TelephonyPermissions.isSystemOrPhone(record.callerUid);
}
/**