diff options
author | Rambo Wang <rambowang@google.com> | 2021-07-19 12:27:38 -0700 |
---|---|---|
committer | Rambo Wang <rambowang@google.com> | 2021-07-19 14:54:58 -0700 |
commit | 588ec9f398b00216219a5e3973ab75a3bd791c85 (patch) | |
tree | a01b3e79d6469d10b6e3fb9825cf6f12f138b5d2 /telephony/java | |
parent | 4438cf6799554ebe69088252c6da87d06063d1f7 (diff) |
Clear binder identity in callback of IMS IPC interfaces
The binder identity does get cleared when goes from client process
into phone process. When it comes back from phone to client, the
binder identity should also be cleared.
Bug: 193923945
Test: atest android.telephony.cts.TelephonyManagerTest
Test: atest ImsServiceTest RcsFeatureControllerTest ImsMmTelManagerTest
Merged-In: I34225e32111879e155c9f7865f0045430d171467
Change-Id: I34225e32111879e155c9f7865f0045430d171467
(cherry picked from commit c18002c465912eed70c2c22755949b06849a8f08)
Diffstat (limited to 'telephony/java')
3 files changed, 42 insertions, 7 deletions
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index e0ab0a368a4f..255a61266ebf 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -13965,7 +13965,12 @@ public class TelephonyManager { IBooleanConsumer aidlConsumer = callback == null ? null : new IBooleanConsumer.Stub() { @Override public void accept(boolean result) { - executor.execute(() -> callback.accept(result)); + final long identity = Binder.clearCallingIdentity(); + try { + executor.execute(() -> callback.accept(result)); + } finally { + Binder.restoreCallingIdentity(identity); + } } }; diff --git a/telephony/java/android/telephony/ims/ImsMmTelManager.java b/telephony/java/android/telephony/ims/ImsMmTelManager.java index 53922ed27c10..36082dc8180e 100644 --- a/telephony/java/android/telephony/ims/ImsMmTelManager.java +++ b/telephony/java/android/telephony/ims/ImsMmTelManager.java @@ -445,7 +445,12 @@ public class ImsMmTelManager implements RegistrationManager { iTelephony.getImsMmTelRegistrationState(mSubId, new IIntegerConsumer.Stub() { @Override public void accept(int result) { - executor.execute(() -> stateCallback.accept(result)); + final long identity = Binder.clearCallingIdentity(); + try { + executor.execute(() -> stateCallback.accept(result)); + } finally { + Binder.restoreCallingIdentity(identity); + } } }); } catch (ServiceSpecificException | RemoteException e) { @@ -487,7 +492,12 @@ public class ImsMmTelManager implements RegistrationManager { new IIntegerConsumer.Stub() { @Override public void accept(int result) { - executor.execute(() -> transportTypeCallback.accept(result)); + final long identity = Binder.clearCallingIdentity(); + try { + executor.execute(() -> transportTypeCallback.accept(result)); + } finally { + Binder.restoreCallingIdentity(identity); + } } }); } catch (ServiceSpecificException | RemoteException e) { @@ -807,7 +817,12 @@ public class ImsMmTelManager implements RegistrationManager { iTelephony.isMmTelCapabilitySupported(mSubId, new IIntegerConsumer.Stub() { @Override public void accept(int result) { - executor.execute(() -> callback.accept(result == 1)); + final long identity = Binder.clearCallingIdentity(); + try { + executor.execute(() -> callback.accept(result == 1)); + } finally { + Binder.restoreCallingIdentity(identity); + } } }, capability, transportType); } catch (ServiceSpecificException sse) { @@ -1452,7 +1467,12 @@ public class ImsMmTelManager implements RegistrationManager { iTelephony.getImsMmTelFeatureState(mSubId, new IIntegerConsumer.Stub() { @Override public void accept(int result) { - executor.execute(() -> callback.accept(result)); + final long identity = Binder.clearCallingIdentity(); + try { + executor.execute(() -> callback.accept(result)); + } finally { + Binder.restoreCallingIdentity(identity); + } } }); } catch (ServiceSpecificException sse) { diff --git a/telephony/java/android/telephony/ims/ImsRcsManager.java b/telephony/java/android/telephony/ims/ImsRcsManager.java index 91c53244a780..8d6fa4141b5c 100644 --- a/telephony/java/android/telephony/ims/ImsRcsManager.java +++ b/telephony/java/android/telephony/ims/ImsRcsManager.java @@ -299,7 +299,12 @@ public class ImsRcsManager { imsRcsController.getImsRcsRegistrationState(mSubId, new IIntegerConsumer.Stub() { @Override public void accept(int result) { - executor.execute(() -> stateCallback.accept(result)); + final long identity = Binder.clearCallingIdentity(); + try { + executor.execute(() -> stateCallback.accept(result)); + } finally { + Binder.restoreCallingIdentity(identity); + } } }); } catch (ServiceSpecificException | RemoteException e) { @@ -345,7 +350,12 @@ public class ImsRcsManager { new IIntegerConsumer.Stub() { @Override public void accept(int result) { - executor.execute(() -> transportTypeCallback.accept(result)); + final long identity = Binder.clearCallingIdentity(); + try { + executor.execute(() -> transportTypeCallback.accept(result)); + } finally { + Binder.restoreCallingIdentity(identity); + } } }); } catch (ServiceSpecificException | RemoteException e) { |