From 8b604ab472c5aedf5c9e78c8aa31b53b0185df79 Mon Sep 17 00:00:00 2001 From: Reema Bajwa Date: Mon, 2 Jan 2023 23:27:35 +0000 Subject: [PATCH] Fix bug in credential manager settings Crash due to null ServiceInfo when base class getServiceInfo is called. This is because the base serviceInfo is not populated until an update happens. Bug: 264279975 Test: Build locally Change-Id: I80b7ad2885dcfa675e2dffffb249ab33b117d77d --- .../android/server/credentials/CredentialManagerService.java | 4 +++- .../server/credentials/CredentialManagerServiceImpl.java | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java index d29f86e572485..9b2d876441238 100644 --- a/services/credentials/java/com/android/server/credentials/CredentialManagerService.java +++ b/services/credentials/java/com/android/server/credentials/CredentialManagerService.java @@ -247,6 +247,8 @@ public final class CredentialManagerService return cancelTransport; } + @SuppressWarnings("GuardedBy") // ErrorProne requires listEnabledProviders + // to be guarded by 'service.mLock', which is the same as mLock. @Override public ICancellationSignal listEnabledProviders(IListEnabledProvidersCallback callback) { Log.i(TAG, "listEnabledProviders"); @@ -256,7 +258,7 @@ public final class CredentialManagerService runForUser( (service) -> { enabledProviders.add( - service.getServiceInfo().getComponentName().flattenToString()); + service.getComponentName().flattenToString()); }); // Call the callback. diff --git a/services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java b/services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java index c03d505bc90f6..183f7437fa909 100644 --- a/services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java +++ b/services/credentials/java/com/android/server/credentials/CredentialManagerServiceImpl.java @@ -53,6 +53,11 @@ public final class CredentialManagerServiceImpl extends } } + @GuardedBy("mLock") + public ComponentName getComponentName() { + return mInfo.getServiceInfo().getComponentName(); + } + @Override // from PerUserSystemService @GuardedBy("mLock") protected ServiceInfo newServiceInfoLocked(@NonNull ComponentName serviceComponent)