summaryrefslogtreecommitdiffstats
path: root/recovery.cpp
diff options
context:
space:
mode:
authorPaul Crowley <paulcrowley@google.com>2018-04-25 04:54:43 +0200
committerandroid-build-merger <android-build-merger@google.com>2018-04-25 04:54:43 +0200
commitbd56ab163a4afd6dd02c042206ad1abc721f54dc (patch)
treecc62dfe270c6a3ef015f2be0c02cf88360e25fbe /recovery.cpp
parentMerge "Dump debug information for apply_patch unit tests" am: fe527cced4 (diff)
parentMerge "Wipe the metadata partition when we wipe data." (diff)
downloadandroid_bootable_recovery-bd56ab163a4afd6dd02c042206ad1abc721f54dc.tar
android_bootable_recovery-bd56ab163a4afd6dd02c042206ad1abc721f54dc.tar.gz
android_bootable_recovery-bd56ab163a4afd6dd02c042206ad1abc721f54dc.tar.bz2
android_bootable_recovery-bd56ab163a4afd6dd02c042206ad1abc721f54dc.tar.lz
android_bootable_recovery-bd56ab163a4afd6dd02c042206ad1abc721f54dc.tar.xz
android_bootable_recovery-bd56ab163a4afd6dd02c042206ad1abc721f54dc.tar.zst
android_bootable_recovery-bd56ab163a4afd6dd02c042206ad1abc721f54dc.zip
Diffstat (limited to 'recovery.cpp')
-rw-r--r--recovery.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/recovery.cpp b/recovery.cpp
index e266d9312..15af9f05a 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -108,6 +108,7 @@ static const char *CONVERT_FBE_DIR = "/tmp/convert_fbe";
static const char *CONVERT_FBE_FILE = "/tmp/convert_fbe/convert_fbe";
static const char *CACHE_ROOT = "/cache";
static const char *DATA_ROOT = "/data";
+static const char* METADATA_ROOT = "/metadata";
static const char *SDCARD_ROOT = "/sdcard";
static const char *TEMPORARY_LOG_FILE = "/tmp/recovery.log";
static const char *TEMPORARY_INSTALL_FILE = "/tmp/last_install";
@@ -752,11 +753,19 @@ static bool wipe_data(Device* device) {
modified_flash = true;
ui->Print("\n-- Wiping data...\n");
- bool success =
- device->PreWipeData() &&
- erase_volume("/data") &&
- (has_cache ? erase_volume("/cache") : true) &&
- device->PostWipeData();
+ bool success = device->PreWipeData();
+ if (success) {
+ success &= erase_volume(DATA_ROOT);
+ if (has_cache) {
+ success &= erase_volume(CACHE_ROOT);
+ }
+ if (volume_for_mount_point(METADATA_ROOT) != nullptr) {
+ success &= erase_volume(METADATA_ROOT);
+ }
+ }
+ if (success) {
+ success &= device->PostWipeData();
+ }
ui->Print("Data wipe %s.\n", success ? "complete" : "failed");
return success;
}