summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--recovery.cpp82
-rw-r--r--updater/blockimg.cpp4
2 files changed, 42 insertions, 44 deletions
diff --git a/recovery.cpp b/recovery.cpp
index ccb8e5d95..c2262161a 100644
--- a/recovery.cpp
+++ b/recovery.cpp
@@ -752,13 +752,15 @@ static bool wipe_data(Device* device) {
static bool prompt_and_wipe_data(Device* device) {
const char* const headers[] = {
- "Boot halted, user data is corrupt",
- "Wipe all user data to recover",
+ "Can't load Android system. Your data may be corrupt.",
+ "If you continue to get this message, you may need to",
+ "perform a factory data reset and erase all user data",
+ "stored on this device.",
NULL
};
const char* const items[] = {
- "Retry boot",
- "Wipe user data",
+ "Try again",
+ "Factory data reset",
NULL
};
for (;;) {
@@ -791,47 +793,45 @@ static bool wipe_cache(bool should_confirm, Device* device) {
return success;
}
-// Secure-wipe a given partition. It uses BLKSECDISCARD, if supported.
-// Otherwise, it goes with BLKDISCARD (if device supports BLKDISCARDZEROES) or
-// BLKZEROOUT.
+// Secure-wipe a given partition. It uses BLKSECDISCARD, if supported. Otherwise, it goes with
+// BLKDISCARD (if device supports BLKDISCARDZEROES) or BLKZEROOUT.
static bool secure_wipe_partition(const std::string& partition) {
- android::base::unique_fd fd(TEMP_FAILURE_RETRY(open(partition.c_str(), O_WRONLY)));
- if (fd == -1) {
- PLOG(ERROR) << "failed to open \"" << partition << "\"";
- return false;
- }
+ android::base::unique_fd fd(TEMP_FAILURE_RETRY(open(partition.c_str(), O_WRONLY)));
+ if (fd == -1) {
+ PLOG(ERROR) << "Failed to open \"" << partition << "\"";
+ return false;
+ }
- uint64_t range[2] = {0, 0};
- if (ioctl(fd, BLKGETSIZE64, &range[1]) == -1 || range[1] == 0) {
- PLOG(ERROR) << "failed to get partition size";
+ uint64_t range[2] = { 0, 0 };
+ if (ioctl(fd, BLKGETSIZE64, &range[1]) == -1 || range[1] == 0) {
+ PLOG(ERROR) << "Failed to get partition size";
+ return false;
+ }
+ LOG(INFO) << "Secure-wiping \"" << partition << "\" from " << range[0] << " to " << range[1];
+
+ LOG(INFO) << " Trying BLKSECDISCARD...";
+ if (ioctl(fd, BLKSECDISCARD, &range) == -1) {
+ PLOG(WARNING) << " Failed";
+
+ // Use BLKDISCARD if it zeroes out blocks, otherwise use BLKZEROOUT.
+ unsigned int zeroes;
+ if (ioctl(fd, BLKDISCARDZEROES, &zeroes) == 0 && zeroes != 0) {
+ LOG(INFO) << " Trying BLKDISCARD...";
+ if (ioctl(fd, BLKDISCARD, &range) == -1) {
+ PLOG(ERROR) << " Failed";
return false;
+ }
+ } else {
+ LOG(INFO) << " Trying BLKZEROOUT...";
+ if (ioctl(fd, BLKZEROOUT, &range) == -1) {
+ PLOG(ERROR) << " Failed";
+ return false;
+ }
}
- printf("Secure-wiping \"%s\" from %" PRIu64 " to %" PRIu64 ".\n",
- partition.c_str(), range[0], range[1]);
-
- printf("Trying BLKSECDISCARD...\t");
- if (ioctl(fd, BLKSECDISCARD, &range) == -1) {
- printf("failed: %s\n", strerror(errno));
-
- // Use BLKDISCARD if it zeroes out blocks, otherwise use BLKZEROOUT.
- unsigned int zeroes;
- if (ioctl(fd, BLKDISCARDZEROES, &zeroes) == 0 && zeroes != 0) {
- printf("Trying BLKDISCARD...\t");
- if (ioctl(fd, BLKDISCARD, &range) == -1) {
- printf("failed: %s\n", strerror(errno));
- return false;
- }
- } else {
- printf("Trying BLKZEROOUT...\t");
- if (ioctl(fd, BLKZEROOUT, &range) == -1) {
- printf("failed: %s\n", strerror(errno));
- return false;
- }
- }
- }
+ }
- printf("done\n");
- return true;
+ LOG(INFO) << " Done";
+ return true;
}
// Check if the wipe package matches expectation:
@@ -863,7 +863,7 @@ static bool check_wipe_package(size_t wipe_package_size) {
return false;
}
std::string metadata;
- if (!read_metadata_from_package(&zip, &metadata)) {
+ if (!read_metadata_from_package(zip, &metadata)) {
CloseArchive(zip);
return false;
}
diff --git a/updater/blockimg.cpp b/updater/blockimg.cpp
index a8146eb50..db5fcc87c 100644
--- a/updater/blockimg.cpp
+++ b/updater/blockimg.cpp
@@ -1220,9 +1220,7 @@ static int PerformCommandFree(CommandParameters& params) {
const std::string& id = params.tokens[params.cpos++];
- if (stash_map.find(id) != stash_map.end()) {
- stash_map.erase(id);
- }
+ stash_map.erase(id);
if (params.createdstash || params.canwrite) {
return FreeStash(params.stashbase, id);