From e7ddd1650d811638cd8f12b6c73e3734ecc7e835 Mon Sep 17 00:00:00 2001 From: N Harish Date: Mon, 25 Jan 2021 17:22:33 +0530 Subject: [PATCH] Fix for TestDirectBootEmulated testcase In case of emulated FBE the secrets are empty hence add this exception to prevent from unlocking userkey. Bug: 177617301 Test: android.appsecurity.cts.DirectBootHostTest#testDirectBootEmulated Change-Id: I5be2ceb61d9ef47219862e75cc8ec03ab5513426 --- .../core/java/com/android/server/StorageManagerService.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java index 678387c540edc..42b821226c49e 100644 --- a/services/core/java/com/android/server/StorageManagerService.java +++ b/services/core/java/com/android/server/StorageManagerService.java @@ -3294,6 +3294,12 @@ class StorageManagerService extends IStorageManager.Stub enforcePermission(android.Manifest.permission.STORAGE_INTERNAL); if (isFsEncrypted) { + // When a user has secure lock screen, require secret to actually unlock. + // This check is mostly in place for emulation mode. + if (StorageManager.isFileEncryptedEmulatedOnly() && + mLockPatternUtils.isSecure(userId) && ArrayUtils.isEmpty(secret)) { + throw new IllegalStateException("Secret required to unlock secure user " + userId); + } try { mVold.unlockUserKey(userId, serialNumber, encodeBytes(token), encodeBytes(secret));