From d7e3cf8eefea41940076504d10f4295e1cbec5d7 Mon Sep 17 00:00:00 2001 From: Omer Ozer Date: Fri, 17 Mar 2023 20:50:51 +0000 Subject: [PATCH] Clear/restore calling app identity prior to ui launch. Bug: 274160895 Test: local Change-Id: I78124ced16c9703892d36069c33bedbe29ce22e2 --- .../android/server/credentials/GetRequestSession.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/services/credentials/java/com/android/server/credentials/GetRequestSession.java b/services/credentials/java/com/android/server/credentials/GetRequestSession.java index 00fbbba7cea54..68cbc80a435e0 100644 --- a/services/credentials/java/com/android/server/credentials/GetRequestSession.java +++ b/services/credentials/java/com/android/server/credentials/GetRequestSession.java @@ -27,6 +27,7 @@ import android.credentials.GetCredentialResponse; import android.credentials.IGetCredentialCallback; import android.credentials.ui.ProviderData; import android.credentials.ui.RequestInfo; +import android.os.Binder; import android.os.CancellationSignal; import android.os.RemoteException; import android.service.credentials.CallingAppInfo; @@ -84,11 +85,12 @@ public class GetRequestSession extends RequestSession providerDataList) { mChosenProviderFinalPhaseMetric.setUiCallStartTimeNanoseconds(System.nanoTime()); try { - mClientCallback.onPendingIntent(mCredentialManagerUi.createPendingIntent( + Binder.withCleanCallingIdentity(() -> + mClientCallback.onPendingIntent(mCredentialManagerUi.createPendingIntent( RequestInfo.newGetRequestInfo( - mRequestId, mClientRequest, mClientAppInfo.getPackageName()), - providerDataList)); - } catch (RemoteException e) { + mRequestId, mClientRequest, mClientAppInfo.getPackageName()), + providerDataList))); + } catch (RuntimeException e) { mChosenProviderFinalPhaseMetric.setUiReturned(false); respondToClientWithErrorAndFinish( GetCredentialException.TYPE_UNKNOWN, "Unable to instantiate selector");