summaryrefslogtreecommitdiff
path: root/telephony/java/android
diff options
context:
space:
mode:
authorRambo Wang <rambowang@google.com>2021-07-19 12:27:38 -0700
committerRambo Wang <rambowang@google.com>2021-07-19 14:54:58 -0700
commit588ec9f398b00216219a5e3973ab75a3bd791c85 (patch)
treea01b3e79d6469d10b6e3fb9825cf6f12f138b5d2 /telephony/java/android
parent4438cf6799554ebe69088252c6da87d06063d1f7 (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/android')
-rw-r--r--telephony/java/android/telephony/TelephonyManager.java7
-rw-r--r--telephony/java/android/telephony/ims/ImsMmTelManager.java28
-rw-r--r--telephony/java/android/telephony/ims/ImsRcsManager.java14
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) {