From 05ab439039544df6ea1cb66829159013eda52ddc Mon Sep 17 00:00:00 2001 From: Malcolm Chen Date: Wed, 28 Feb 2018 15:20:45 -0800 Subject: Have proper permission check in getConfigForSubId In CarrierConfigManager, add pass context in constructor, so that when calling CarrierConfigLoader#getConfigForSubId, it can pass callingPackage. Bug: 73136824 Test: regression Change-Id: I4bbff4ea30e2d5473c14d24d6833bf3ca3c595ec Merged-In: I4bbff4ea30e2d5473c14d24d6833bf3ca3c595ec --- config/hiddenapi-light-greylist.txt | 2 +- core/java/android/app/SystemServiceRegistry.java | 2 +- telephony/java/android/telephony/CarrierConfigManager.java | 7 +++++-- telephony/java/android/telephony/TelephonyManager.java | 4 ++-- .../java/com/android/internal/telephony/ICarrierConfigLoader.aidl | 2 +- telephony/java/com/android/internal/telephony/ITelephony.aidl | 7 +++++-- 6 files changed, 15 insertions(+), 9 deletions(-) diff --git a/config/hiddenapi-light-greylist.txt b/config/hiddenapi-light-greylist.txt index cbbe91574ef7..d40106dc58c8 100644 --- a/config/hiddenapi-light-greylist.txt +++ b/config/hiddenapi-light-greylist.txt @@ -8291,7 +8291,7 @@ Lcom/android/internal/telephony/GsmAlphabet;->sLanguageTables:[Ljava/lang/String Lcom/android/internal/telephony/GsmAlphabet;->stringToGsm7BitPacked(Ljava/lang/String;IZII)[B Lcom/android/internal/telephony/GsmAlphabet;->stringToGsm7BitPackedWithHeader(Ljava/lang/String;[BII)[B Lcom/android/internal/telephony/GsmAlphabet;->stringToGsm8BitPacked(Ljava/lang/String;)[B -Lcom/android/internal/telephony/ICarrierConfigLoader;->getConfigForSubId(I)Landroid/os/PersistableBundle; +Lcom/android/internal/telephony/ICarrierConfigLoader;->getConfigForSubId(ILjava/lang/String;)Landroid/os/PersistableBundle; Lcom/android/internal/telephony/IMms$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/IMms; Lcom/android/internal/telephony/IPhoneStateListener$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/IPhoneStateListener; Lcom/android/internal/telephony/IPhoneStateListener;->onCallForwardingIndicatorChanged(Z)V diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java index 3f35d277b56e..fdda85d5122a 100644 --- a/core/java/android/app/SystemServiceRegistry.java +++ b/core/java/android/app/SystemServiceRegistry.java @@ -518,7 +518,7 @@ final class SystemServiceRegistry { new CachedServiceFetcher() { @Override public CarrierConfigManager createService(ContextImpl ctx) { - return new CarrierConfigManager(); + return new CarrierConfigManager(ctx.getOuterContext()); }}); registerService(Context.TELECOM_SERVICE, TelecomManager.class, diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index a084633077ba..b92787af5907 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -51,10 +51,13 @@ public class CarrierConfigManager { public static final String EXTRA_SUBSCRIPTION_INDEX = SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX; + private final Context mContext; + /** * @hide */ - public CarrierConfigManager() { + public CarrierConfigManager(Context context) { + mContext = context; } /** @@ -2373,7 +2376,7 @@ public class CarrierConfigManager { + " ICarrierConfigLoader is null"); return null; } - return loader.getConfigForSubId(subId); + return loader.getConfigForSubId(subId, mContext.getOpPackageName()); } catch (RemoteException ex) { Rlog.e(TAG, "Error getting config for subId " + subId + ": " + ex.toString()); diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 5bd4d22c6d5c..790e6d2f7bbf 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -6639,7 +6639,7 @@ public class TelephonyManager { try { ITelephony telephony = getITelephony(); if (telephony != null) { - return telephony.canChangeDtmfToneLength(); + return telephony.canChangeDtmfToneLength(mSubId, getOpPackageName()); } } catch (RemoteException e) { Log.e(TAG, "Error calling ITelephony#canChangeDtmfToneLength", e); @@ -6658,7 +6658,7 @@ public class TelephonyManager { try { ITelephony telephony = getITelephony(); if (telephony != null) { - return telephony.isWorldPhone(); + return telephony.isWorldPhone(mSubId, getOpPackageName()); } } catch (RemoteException e) { Log.e(TAG, "Error calling ITelephony#isWorldPhone", e); diff --git a/telephony/java/com/android/internal/telephony/ICarrierConfigLoader.aidl b/telephony/java/com/android/internal/telephony/ICarrierConfigLoader.aidl index 511573170bb0..d9471ae2c60d 100644 --- a/telephony/java/com/android/internal/telephony/ICarrierConfigLoader.aidl +++ b/telephony/java/com/android/internal/telephony/ICarrierConfigLoader.aidl @@ -23,7 +23,7 @@ import android.os.PersistableBundle; */ interface ICarrierConfigLoader { - PersistableBundle getConfigForSubId(int subId); + PersistableBundle getConfigForSubId(int subId, String callingPackage); void notifyConfigChangedForSubId(int subId); diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl index 5ecdfc9e1d32..d850fbc471ab 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -1117,16 +1117,19 @@ interface ITelephony { /** * Whether the DTMF tone length can be changed. * + * @param subId The subscription to use. + * @param callingPackage The package making the call. * @return {@code true} if the DTMF tone length can be changed. */ - boolean canChangeDtmfToneLength(); + boolean canChangeDtmfToneLength(int subId, String callingPackage); /** * Whether the device is a world phone. * + * @param callingPackage The package making the call. * @return {@code true} if the devices is a world phone. */ - boolean isWorldPhone(); + boolean isWorldPhone(int subId, String callingPackage); /** * Whether the phone supports TTY mode. -- cgit v1.2.3-59-g8ed1b