Allow Carrier Privs on Any Sub for SubId Check am: cdbd29aa0b Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/services/AlternativeNetworkAccess/+/22716776 Change-Id: Id6a6b303ac6fab9fa190213e3b91e3191ce2a87b Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/src/com/android/ons/OpportunisticNetworkService.java b/src/com/android/ons/OpportunisticNetworkService.java index 485722f..d41051c 100644 --- a/src/com/android/ons/OpportunisticNetworkService.java +++ b/src/com/android/ons/OpportunisticNetworkService.java
@@ -313,10 +313,19 @@ @Override public int getPreferredDataSubscriptionId(String callingPackage, String callingFeatureId) { - TelephonyPermissions - .checkCallingOrSelfReadPhoneState(mContext, - mSubscriptionManager.getDefaultSubscriptionId(), - callingPackage, callingFeatureId, "getPreferredDataSubscriptionId"); + if (!TelephonyPermissions.checkReadPhoneStateOnAnyActiveSub( + mContext, + Binder.getCallingPid(), + Binder.getCallingUid(), + callingPackage, + callingFeatureId, + "getPreferredDataSubscriptionId")) { + throw new SecurityException( + "getPreferredDataSubscriptionId requires READ_PHONE_STATE," + + " READ_PRIVILEGED_PHONE_STATE, or carrier privileges on" + + " any active subscription."); + } + final long identity = Binder.clearCallingIdentity(); try { return mProfileSelector.getPreferredDataSubscriptionId();