From a052e75abad66c9a1bc6cf499bb57f830a074914 Mon Sep 17 00:00:00 2001 From: Rambo Wang Date: Thu, 16 Jan 2020 19:36:32 +0000 Subject: [PATCH] Revert "Revert "Add method to enforce READ_PRECISE_PHONE_STATE p..." Revert "Revert "Add method to enforce READ_PRECISE_PHONE_STATE p..." Revert submission 1209095-revert-1205361-ENFORCE_PRECISE_PERMISSION-ILXHLNNVLE Reason for revert: Bring back original commits Reverted Changes: I8774b6f24: Revert "Add method to enforce READ_PRECISE_PHONE_S... I71413a32c: Revert "Add method to enforce READ_PRECISE_PHONE_S... Change-Id: I6aa9a2b0633032699ceb0e3713fccecd2385d441 --- .../telephony/TelephonyPermissions.java | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/telephony/common/com/android/internal/telephony/TelephonyPermissions.java b/telephony/common/com/android/internal/telephony/TelephonyPermissions.java index c8e2b8962072a..5beb06d8595a4 100644 --- a/telephony/common/com/android/internal/telephony/TelephonyPermissions.java +++ b/telephony/common/com/android/internal/telephony/TelephonyPermissions.java @@ -562,13 +562,40 @@ public final class TelephonyPermissions { } if (DBG) { - Log.d(LOG_TAG, "No READ_PRIVILEDED_PHONE_STATE permission, " + Log.d(LOG_TAG, "No READ_PRIVILEGED_PHONE_STATE permission, " + "check carrier privilege next."); } enforceCallingOrSelfCarrierPrivilege(context, subId, message); } + /** + * Ensure the caller (or self, if not processing an IPC) has + * {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE} or + * {@link android.Manifest.permission#READ_PRECISE_PHONE_STATE} or carrier privileges. + * + * @throws SecurityException if the caller does not have the required permission/privileges + */ + public static void enforeceCallingOrSelfReadPrecisePhoneStatePermissionOrCarrierPrivilege( + Context context, int subId, String message) { + if (context.checkCallingOrSelfPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE) + == PERMISSION_GRANTED) { + return; + } + + if (context.checkCallingOrSelfPermission(Manifest.permission.READ_PRECISE_PHONE_STATE) + == PERMISSION_GRANTED) { + return; + } + + if (DBG) { + Log.d(LOG_TAG, "No READ_PRIVILEGED_PHONE_STATE nor READ_PRECISE_PHONE_STATE permission" + + ", check carrier privilege next."); + } + + enforceCallingOrSelfCarrierPrivilege(context, subId, message); + } + /** * Make sure the caller (or self, if not processing an IPC) has carrier privileges. *