From fde69fbd8ab174dbc9f828785c435a7d52311386 Mon Sep 17 00:00:00 2001 From: Eric Biggers Date: Thu, 10 Mar 2022 22:13:39 +0000 Subject: Remove support for converting from FDE to FBE Devices that launched with Android 10 or later require FBE (File Based Encryption) from the beginning, so there's no need to support converting to FBE after the fact anymore. This was only ever a developer option, so it probably wasn't used much. And in any case, it's not used anymore, as isConvertibleToFBE() is hard-coded to return false. Besides the fact that FBE has been required for several releases now, this functionality was only ever available on devices that use FDE (Full Disk Encryption), but FDE support has been removed from Android. Therefore, remove this unused code. Bug: 208476087 Change-Id: I1f56c8e05fb3fba09aab4bf5f8609b0f552b8999 --- install/adb_install.cpp | 2 +- install/include/install/wipe_data.h | 2 +- install/install.cpp | 2 +- install/wipe_data.cpp | 38 +++++++------------------------------ recovery.cpp | 10 ++++------ 5 files changed, 14 insertions(+), 40 deletions(-) diff --git a/install/adb_install.cpp b/install/adb_install.cpp index 5cba7b67c..b12e52944 100644 --- a/install/adb_install.cpp +++ b/install/adb_install.cpp @@ -369,7 +369,7 @@ InstallResult ApplyFromAdb(Device* device, bool rescue_mode, Device::BuiltinActi "to the device with \"adb sideload \"...\n"); } else { command_map.emplace(MinadbdCommand::kWipeData, [&device]() { - bool result = WipeData(device, false); + bool result = WipeData(device); return std::make_pair(result, true); }); command_map.emplace(MinadbdCommand::kNoOp, []() { return std::make_pair(true, true); }); diff --git a/install/include/install/wipe_data.h b/install/include/install/wipe_data.h index b34891f3d..42cad871e 100644 --- a/install/include/install/wipe_data.h +++ b/install/include/install/wipe_data.h @@ -27,4 +27,4 @@ struct selabel_handle; bool WipeCache(RecoveryUI* ui, const std::function& confirm); // Returns true on success. -bool WipeData(Device* device, bool convert_fbe); +bool WipeData(Device* device); diff --git a/install/install.cpp b/install/install.cpp index 811bcb021..83f3cad6b 100644 --- a/install/install.cpp +++ b/install/install.cpp @@ -347,7 +347,7 @@ static bool PerformPowerwashIfRequired(ZipArchiveHandle zip, Device *device) { const auto payload_properties = ExtractPayloadProperties(zip); if (payload_properties.find("POWERWASH=1") != std::string::npos) { LOG(INFO) << "Payload properties has POWERWASH=1, wiping userdata..."; - return WipeData(device, true); + return WipeData(device); } return true; } diff --git a/install/wipe_data.cpp b/install/wipe_data.cpp index 4eecf72c6..024c1e1d5 100644 --- a/install/wipe_data.cpp +++ b/install/wipe_data.cpp @@ -16,9 +16,7 @@ #include "install/wipe_data.h" -#include #include -#include #include #include @@ -37,9 +35,8 @@ constexpr const char* CACHE_ROOT = "/cache"; constexpr const char* DATA_ROOT = "/data"; constexpr const char* METADATA_ROOT = "/metadata"; -static bool EraseVolume(const char* volume, RecoveryUI* ui, bool convert_fbe) { +static bool EraseVolume(const char* volume, RecoveryUI* ui) { bool is_cache = (strcmp(volume, CACHE_ROOT) == 0); - bool is_data = (strcmp(volume, DATA_ROOT) == 0); std::vector log_files; if (is_cache) { @@ -52,28 +49,7 @@ static bool EraseVolume(const char* volume, RecoveryUI* ui, bool convert_fbe) { ensure_path_unmounted(volume); - int result; - if (is_data && convert_fbe) { - constexpr const char* CONVERT_FBE_DIR = "/tmp/convert_fbe"; - constexpr const char* CONVERT_FBE_FILE = "/tmp/convert_fbe/convert_fbe"; - // Create convert_fbe breadcrumb file to signal init to convert to file based encryption, not - // full disk encryption. - if (mkdir(CONVERT_FBE_DIR, 0700) != 0) { - PLOG(ERROR) << "Failed to mkdir " << CONVERT_FBE_DIR; - return false; - } - FILE* f = fopen(CONVERT_FBE_FILE, "wbe"); - if (!f) { - PLOG(ERROR) << "Failed to convert to file encryption"; - return false; - } - fclose(f); - result = format_volume(volume, CONVERT_FBE_DIR); - remove(CONVERT_FBE_FILE); - rmdir(CONVERT_FBE_DIR); - } else { - result = format_volume(volume); - } + int result = format_volume(volume); if (is_cache) { RestoreLogFilesAfterFormat(log_files); @@ -97,12 +73,12 @@ bool WipeCache(RecoveryUI* ui, const std::function& confirm_func) { ui->SetBackground(RecoveryUI::ERASING); ui->SetProgressType(RecoveryUI::INDETERMINATE); - bool success = EraseVolume("/cache", ui, false); + bool success = EraseVolume("/cache", ui); ui->Print("Cache wipe %s.\n", success ? "complete" : "failed"); return success; } -bool WipeData(Device* device, bool convert_fbe) { +bool WipeData(Device* device) { RecoveryUI* ui = device->GetUI(); ui->Print("\n-- Wiping data...\n"); ui->SetBackground(RecoveryUI::ERASING); @@ -115,13 +91,13 @@ bool WipeData(Device* device, bool convert_fbe) { bool success = device->PreWipeData(); if (success) { - success &= EraseVolume(DATA_ROOT, ui, convert_fbe); + success &= EraseVolume(DATA_ROOT, ui); bool has_cache = volume_for_mount_point("/cache") != nullptr; if (has_cache) { - success &= EraseVolume(CACHE_ROOT, ui, false); + success &= EraseVolume(CACHE_ROOT, ui); } if (volume_for_mount_point(METADATA_ROOT) != nullptr) { - success &= EraseVolume(METADATA_ROOT, ui, false); + success &= EraseVolume(METADATA_ROOT, ui); } } if (success) { diff --git a/recovery.cpp b/recovery.cpp index 0c977c361..4d3901959 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -207,8 +207,7 @@ static InstallResult prompt_and_wipe_data(Device* device) { if (ask_to_wipe_data(device)) { CHECK(device->GetReason().has_value()); - bool convert_fbe = device->GetReason().value() == "convert_fbe"; - if (WipeData(device, convert_fbe)) { + if (WipeData(device)) { return INSTALL_SUCCESS; } else { return INSTALL_ERROR; @@ -437,10 +436,10 @@ static Device::BuiltinAction PromptAndWait(Device* device, InstallResult status) save_current_log = true; if (ui->IsTextVisible()) { if (ask_to_wipe_data(device)) { - WipeData(device, false); + WipeData(device); } } else { - WipeData(device, false); + WipeData(device); return Device::NO_ACTION; } break; @@ -794,8 +793,7 @@ Device::BuiltinAction start_recovery(Device* device, const std::vectorGetReason().has_value()); - bool convert_fbe = device->GetReason().value() == "convert_fbe"; - if (!WipeData(device, convert_fbe)) { + if (!WipeData(device)) { status = INSTALL_ERROR; } } else if (should_prompt_and_wipe_data) { -- cgit v1.2.3