diff options
| author | 2024-06-28 15:33:32 -0500 | |
|---|---|---|
| committer | 2024-07-03 15:38:25 +0000 | |
| commit | f9ca36109211e7be8d921e3b7f56469c49ce5fd9 (patch) | |
| tree | b3df0c9d9049d1bec2b099c958cb9884ff79294a | |
| parent | ef2629a54361ebaad857293cd09609b975ed0333 (diff) | |
Check phone or system process in PMS with multiple-user-aware way
This CL checks phone or system process by the help of
TelephonyPermission.isSystemOrPhone which works not only for system user
but also secondary users in which 1000/1001 is the app id instead of
UID.
Bug: 328511085
Test: atest PackageManagerServiceTest
Flag: com.android.internal.telephony.flags.support_phone_uid_check_for_multiuser
Change-Id: I936c16b63924452cd68b4a38a8ce3369c7913d87
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerService.java | 4 | ||||
| -rw-r--r-- | services/core/java/com/android/server/pm/PackageManagerServiceUtils.java | 3 |
2 files changed, 4 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index c0b8034b9a56..2e63cdbf1823 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -186,6 +186,7 @@ import com.android.internal.pm.pkg.component.ParsedInstrumentation; import com.android.internal.pm.pkg.component.ParsedMainComponent; import com.android.internal.pm.pkg.parsing.ParsingPackageUtils; import com.android.internal.telephony.CarrierAppUtils; +import com.android.internal.telephony.TelephonyPermissions; import com.android.internal.util.ArrayUtils; import com.android.internal.util.CollectionUtils; import com.android.internal.util.ConcurrentUtils; @@ -4492,8 +4493,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService void setSystemAppHiddenUntilInstalled(@NonNull Computer snapshot, String packageName, boolean hidden) { final int callingUid = Binder.getCallingUid(); - final boolean calledFromSystemOrPhone = callingUid == Process.PHONE_UID - || callingUid == Process.SYSTEM_UID; + final boolean calledFromSystemOrPhone = TelephonyPermissions.isSystemOrPhone(callingUid); if (!calledFromSystemOrPhone) { mContext.enforceCallingOrSelfPermission(Manifest.permission.SUSPEND_APPS, "setSystemAppHiddenUntilInstalled"); diff --git a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java index ff8abf879487..924b36cef79a 100644 --- a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java +++ b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java @@ -92,6 +92,7 @@ import android.util.proto.ProtoOutputStream; import com.android.internal.content.InstallLocationUtils; import com.android.internal.content.NativeLibraryHelper; +import com.android.internal.telephony.TelephonyPermissions; import com.android.internal.util.ArrayUtils; import com.android.internal.util.FastPrintWriter; import com.android.internal.util.HexDump; @@ -356,7 +357,7 @@ public class PackageManagerServiceUtils { * If not, throws a {@link SecurityException}. */ public static void enforceSystemOrPhoneCaller(String methodName, int callingUid) { - if (callingUid != Process.PHONE_UID && callingUid != Process.SYSTEM_UID) { + if (!TelephonyPermissions.isSystemOrPhone(callingUid)) { throw new SecurityException( "Cannot call " + methodName + " from UID " + callingUid); } |