Merge "Check for secdiscardable file missing" into udc-dev
diff --git a/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java b/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java
index dee26e38..e592a22 100644
--- a/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java
+++ b/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java
@@ -1245,8 +1245,13 @@
}
sid = sidFromPasswordHandle(pwd.passwordHandle);
}
- protectorSecret = transformUnderSecdiscardable(stretchedLskf,
- loadSecdiscardable(protectorId, userId));
+ byte[] secdiscardable = loadSecdiscardable(protectorId, userId);
+ if (secdiscardable == null) {
+ Slog.e(TAG, "secdiscardable file not found");
+ result.gkResponse = VerifyCredentialResponse.ERROR;
+ return result;
+ }
+ protectorSecret = transformUnderSecdiscardable(stretchedLskf, secdiscardable);
}
// Supplied credential passes first stage weaver/gatekeeper check so it should be correct.
// Notify the callback so the keyguard UI can proceed immediately.
@@ -1311,6 +1316,11 @@
byte[] token, int userId) {
AuthenticationResult result = new AuthenticationResult();
byte[] secdiscardable = loadSecdiscardable(protectorId, userId);
+ if (secdiscardable == null) {
+ Slog.e(TAG, "secdiscardable file not found");
+ result.gkResponse = VerifyCredentialResponse.ERROR;
+ return result;
+ }
int slotId = loadWeaverSlot(protectorId, userId);
if (slotId != INVALID_WEAVER_SLOT) {
if (!isWeaverAvailable()) {