From 85c368a6f422e39ac1ae4656d94429b6bd1db420 Mon Sep 17 00:00:00 2001 From: Jack Yu Date: Fri, 7 Feb 2025 13:44:13 -0800 Subject: Fixed incorrect permission check isSubscriptionAssociatedWithUser API should also allow callers with READ_PRIVILEGED_PHONE_STATE permission to access Bug: 394859326 Test: atest SubscriptionManagerTests Test: Basic telephony functionality tests Flag: EXEMPT bug fix Change-Id: I9aa3953912d71fd2f2914361669c2ffb9bb417fd --- telephony/java/android/telephony/SubscriptionManager.java | 6 +++++- telephony/java/com/android/internal/telephony/ISub.aidl | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'telephony') diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index e0af22369182..d2741ac7ee9f 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -4821,10 +4821,14 @@ public class SubscriptionManager { + "Invalid subscriptionId: " + subscriptionId); } + String contextPkg = mContext != null ? mContext.getOpPackageName() : ""; + String contextAttributionTag = mContext != null ? mContext.getAttributionTag() : null; + try { ISub iSub = TelephonyManager.getSubscriptionService(); if (iSub != null) { - return iSub.isSubscriptionAssociatedWithCallingUser(subscriptionId); + return iSub.isSubscriptionAssociatedWithCallingUser(subscriptionId, contextPkg, + contextAttributionTag); } else { throw new IllegalStateException("subscription service unavailable."); } diff --git a/telephony/java/com/android/internal/telephony/ISub.aidl b/telephony/java/com/android/internal/telephony/ISub.aidl index 1bfec29a3cf4..a974c615a4ae 100644 --- a/telephony/java/com/android/internal/telephony/ISub.aidl +++ b/telephony/java/com/android/internal/telephony/ISub.aidl @@ -347,13 +347,17 @@ interface ISub { * Returns whether the given subscription is associated with the calling user. * * @param subscriptionId the subscription ID of the subscription + * @param callingPackage The package maing the call + * @param callingFeatureId The feature in the package + * @return {@code true} if the subscription is associated with the user that the current process * is running in; {@code false} otherwise. * * @throws IllegalArgumentException if subscription doesn't exist. * @throws SecurityException if the caller doesn't have permissions required. */ - boolean isSubscriptionAssociatedWithCallingUser(int subscriptionId); + boolean isSubscriptionAssociatedWithCallingUser(int subscriptionId, String callingPackage, + String callingFeatureId); /** * Check if subscription and user are associated with each other. -- cgit v1.2.3-59-g8ed1b