From 78998ccaf5eebed67c6018a3d192001e7f633ea7 Mon Sep 17 00:00:00 2001 From: Omer Ozer Date: Fri, 16 Jun 2023 04:44:33 +0000 Subject: [PATCH] Fix CredDesc reg flow bugs Fixed the issue caused by intent creation without system context and the npe caused by null action chip list. Dropping then restoring caller id before intent creation and passing an empty list to avoid npe. Using uuid to distinguish different cred options in session. Bug: 287538489 Bug: 287529343 Bug: 287689739 Test: local Change-Id: I5612dd0f08a90a762c5ca5794a55a7abccecad2f --- .../server/credentials/GetRequestSession.java | 10 ++++++---- .../ProviderRegistryGetSession.java | 20 +++++++++++-------- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/services/credentials/java/com/android/server/credentials/GetRequestSession.java b/services/credentials/java/com/android/server/credentials/GetRequestSession.java index aee4f583eec95..c9e691e199c71 100644 --- a/services/credentials/java/com/android/server/credentials/GetRequestSession.java +++ b/services/credentials/java/com/android/server/credentials/GetRequestSession.java @@ -28,6 +28,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; @@ -98,8 +99,9 @@ public class GetRequestSession extends RequestSession providerDataList) { mRequestSessionMetric.collectUiCallStartTime(System.nanoTime()); mCredentialManagerUi.setStatus(CredentialManagerUi.UiStatus.USER_INTERACTION); - cancelExistingPendingIntent(); + Binder.withCleanCallingIdentity(()-> { try { + cancelExistingPendingIntent(); mPendingIntent = mCredentialManagerUi.createPendingIntent( RequestInfo.newGetRequestInfo( mRequestId, mClientRequest, mClientAppInfo.getPackageName(), @@ -112,9 +114,9 @@ public class GetRequestSession extends RequestSession>) filterResult - -> filterResult.mCredentialEntries.stream()) - .collect(Collectors.toList()); + (Function>) + filterResult -> filterResult.mCredentialEntries.stream()) + .collect(Collectors.toList()); updateStatusAndInvokeCallback(Status.CREDENTIALS_RECEIVED, - /*source=*/ CredentialsSource.REGISTRY); + /*source=*/ CredentialsSource.REGISTRY); mProviderSessionMetric.collectCandidateEntryMetrics(mCredentialEntries); }