summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Reema Bajwa <reemabajwa@google.com> 2023-05-12 08:24:00 +0000
committer Reema Bajwa <reemabajwa@google.com> 2023-05-12 08:24:03 +0000
commitf7b23ffc4cb8bea3d2b7a6bb07d2fd9c950ff3e1 (patch)
tree9d7e1bc0857454058acb23877817218a98de2198
parentc7515ae352abf6caa0da43eb50fffdbc6feb1561 (diff)
Fix bug that filters out system providers
When setAllowedProvider is specified, currently we are filtering out all the system providers. With this change, we will always ping the system providers + the providers specified in the allow list. Bug: 277773297 Test: built locally & deployed on devive Change-Id: I8a82f68edbd75b9a879d7e32aa32413af3a35cd9
-rw-r--r--services/credentials/java/com/android/server/credentials/ProviderGetSession.java11
1 files changed, 8 insertions, 3 deletions
diff --git a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
index 14260f0e1ad4..d490cda1e8ee 100644
--- a/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
+++ b/services/credentials/java/com/android/server/credentials/ProviderGetSession.java
@@ -150,7 +150,7 @@ public final class ProviderGetSession extends ProviderSession<BeginGetCredential
List<CredentialOption> filteredOptions = new ArrayList<>();
for (CredentialOption option : clientRequest.getCredentialOptions()) {
if (providerCapabilities.contains(option.getType())
- && isProviderAllowed(option, info.getComponentName())
+ && isProviderAllowed(option, info)
&& checkSystemProviderRequirement(option, info.isSystemProvider())) {
Slog.i(TAG, "Option of type: " + option.getType() + " meets all filtering"
+ "conditions");
@@ -167,9 +167,14 @@ public final class ProviderGetSession extends ProviderSession<BeginGetCredential
return null;
}
- private static boolean isProviderAllowed(CredentialOption option, ComponentName componentName) {
+ private static boolean isProviderAllowed(CredentialOption option,
+ CredentialProviderInfo providerInfo) {
+ if (providerInfo.isSystemProvider()) {
+ // Always allow system providers , including the remote provider
+ return true;
+ }
if (!option.getAllowedProviders().isEmpty() && !option.getAllowedProviders().contains(
- componentName)) {
+ providerInfo.getComponentName())) {
Slog.i(TAG, "Provider allow list specified but does not contain this provider");
return false;
}