diff --git a/partition.cpp b/partition.cpp index 5626e5c4..7f4189a6 100644 --- a/partition.cpp +++ b/partition.cpp @@ -685,11 +685,18 @@ void TWPartition::Setup_Data_Partition(bool Display_Error) { } else { if (!Decrypt_FBE_DE()) { - LOGINFO("Trying wrapped key.\n"); - property_set("fbe.data.wrappedkey", "true"); + char wrappedvalue[PROPERTY_VALUE_MAX]; + property_get("fbe.data.wrappedkey", wrappedvalue, ""); + std::string wrappedkeyvalue(wrappedvalue); + if (wrappedkeyvalue == "true") { + LOGERR("Unable to decrypt FBE device\n"); + } else { + LOGINFO("Trying wrapped key.\n"); + property_set("fbe.data.wrappedkey", "true"); if (!Decrypt_FBE_DE()) { LOGERR("Unable to decrypt FBE device\n"); } + } } } if (datamedia && (!Is_Encrypted || (Is_Encrypted && Is_Decrypted))) { diff --git a/partitionmanager.cpp b/partitionmanager.cpp index 159ceadc..b6918f3b 100755 --- a/partitionmanager.cpp +++ b/partitionmanager.cpp @@ -304,10 +304,17 @@ int TWPartitionManager::Process_Fstab(string Fstab_Filename, bool Display_Error, usleep(500); if (Decrypt_Data->Mount(false)) { if (!Decrypt_Data->Decrypt_FBE_DE()) { - LOGINFO("Trying wrapped key.\n"); - property_set("fbe.data.wrappedkey", "true"); - if (!Decrypt_Data->Decrypt_FBE_DE()) { + char wrappedvalue[PROPERTY_VALUE_MAX]; + property_get("fbe.data.wrappedkey", wrappedvalue, ""); + std::string wrappedkeyvalue(wrappedvalue); + if (wrappedkeyvalue == "true") { LOGERR("Unable to decrypt FBE device\n"); + } else { + LOGINFO("Trying wrapped key.\n"); + property_set("fbe.data.wrappedkey", "true"); + if (!Decrypt_Data->Decrypt_FBE_DE()) { + LOGERR("Unable to decrypt FBE device\n"); + } } }