diff options
| author | 2023-08-25 05:30:34 +0000 | |
|---|---|---|
| committer | 2023-08-25 05:30:34 +0000 | |
| commit | 194290410ff3c49d92ef4e428e13c8930f73eb75 (patch) | |
| tree | 4f0ab1149044ccab75e965649354368c08b81ca6 | |
| parent | 7281f661714b8eb13cbfd47ab17ba2ea820e0057 (diff) | |
| parent | 02add5fc232bf2bc759db59d87eb5fd067a643b9 (diff) | |
Merge changes I32306fb8,Ic06c4535,I70c26232 into udc-dev-plus-aosp am: 02add5fc23
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/24537169
Change-Id: Ib61f1c1b852df441f4895a91319984b73f47572d
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java | 53 |
1 files changed, 39 insertions, 14 deletions
diff --git a/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java b/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java index a95b968b0bcf..11c0f5183e21 100644 --- a/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java +++ b/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java @@ -72,7 +72,6 @@ import java.util.NoSuchElementException; import java.util.Objects; import java.util.Set; - /** * A class that manages a user's synthetic password (SP) ({@link #SyntheticPassword}), along with a * set of SP protectors that are independent ways that the SP is protected. @@ -547,22 +546,48 @@ class SyntheticPasswordManager { } } - private @Nullable IWeaver getWeaverServiceInternal() { - // Try to get the AIDL service first + private @Nullable IWeaver getWeaverAidlService() { + final IWeaver aidlWeaver; try { - IWeaver aidlWeaver = IWeaver.Stub.asInterface( - ServiceManager.waitForDeclaredService(IWeaver.DESCRIPTOR + "/default")); - if (aidlWeaver != null) { - Slog.i(TAG, "Using AIDL weaver service"); - try { - aidlWeaver.asBinder().linkToDeath(new WeaverDiedRecipient(), 0); - } catch (RemoteException e) { - Slog.w(TAG, "Unable to register Weaver death recipient", e); - } - return aidlWeaver; - } + aidlWeaver = + IWeaver.Stub.asInterface( + ServiceManager.waitForDeclaredService(IWeaver.DESCRIPTOR + "/default")); } catch (SecurityException e) { Slog.w(TAG, "Does not have permissions to get AIDL weaver service"); + return null; + } + if (aidlWeaver == null) { + return null; + } + final int aidlVersion; + try { + aidlVersion = aidlWeaver.getInterfaceVersion(); + } catch (RemoteException e) { + Slog.e(TAG, "Cannot get AIDL weaver service version", e); + return null; + } + if (aidlVersion < 2) { + Slog.w(TAG, + "Ignoring AIDL weaver service v" + + aidlVersion + + " because only v2 and later are supported"); + return null; + } + Slog.i(TAG, "Found AIDL weaver service v" + aidlVersion); + return aidlWeaver; + } + + private @Nullable IWeaver getWeaverServiceInternal() { + // Try to get the AIDL service first + IWeaver aidlWeaver = getWeaverAidlService(); + if (aidlWeaver != null) { + Slog.i(TAG, "Using AIDL weaver service"); + try { + aidlWeaver.asBinder().linkToDeath(new WeaverDiedRecipient(), 0); + } catch (RemoteException e) { + Slog.w(TAG, "Unable to register Weaver death recipient", e); + } + return aidlWeaver; } // If the AIDL service can't be found, look for the HIDL service |