diff options
| author | 2018-02-28 15:20:45 -0800 | |
|---|---|---|
| committer | 2018-06-01 11:34:46 -0700 | |
| commit | d1272d1cb8d3af45f85f524c84134334f27bd925 (patch) | |
| tree | 8247e165cd8521f62d55ae93f2593b1ad03c63d4 | |
| parent | 6bbc61e725b432498b509f3643467415184fe2e2 (diff) | |
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
6 files changed, 15 insertions, 9 deletions
diff --git a/config/hiddenapi-light-greylist.txt b/config/hiddenapi-light-greylist.txt index 0cb1938e6350..cba559bc3bc0 100644 --- a/config/hiddenapi-light-greylist.txt +++ b/config/hiddenapi-light-greylist.txt @@ -8184,7 +8184,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 97d776d61c01..ced405a47bf8 100644 --- a/core/java/android/app/SystemServiceRegistry.java +++ b/core/java/android/app/SystemServiceRegistry.java @@ -517,7 +517,7 @@ final class SystemServiceRegistry { new CachedServiceFetcher<CarrierConfigManager>() { @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 f66164c302c3..f60332e3fb30 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; } /** @@ -2305,7 +2308,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 31a81e1b0ecc..d7568b484d0f 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -6554,7 +6554,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); @@ -6573,7 +6573,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 f02f27d1699c..6ea8ccb9fa23 100644 --- a/telephony/java/com/android/internal/telephony/ITelephony.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl @@ -1123,16 +1123,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. |