diff options
author | Tao Bao <tbao@google.com> | 2017-03-24 21:11:51 +0100 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2017-03-24 21:11:53 +0100 |
commit | 6014db5da64dae2c9ce6be2f8115db235b75af8a (patch) | |
tree | 527b4b20820b8fd154673224f977c5e6d8bf4134 /recovery.cpp | |
parent | Merge "Reword the wipe warning message to be more comprehensible." (diff) | |
parent | Fix the wrong parameter when calling read_metadata_from_package(). (diff) | |
download | android_bootable_recovery-6014db5da64dae2c9ce6be2f8115db235b75af8a.tar android_bootable_recovery-6014db5da64dae2c9ce6be2f8115db235b75af8a.tar.gz android_bootable_recovery-6014db5da64dae2c9ce6be2f8115db235b75af8a.tar.bz2 android_bootable_recovery-6014db5da64dae2c9ce6be2f8115db235b75af8a.tar.lz android_bootable_recovery-6014db5da64dae2c9ce6be2f8115db235b75af8a.tar.xz android_bootable_recovery-6014db5da64dae2c9ce6be2f8115db235b75af8a.tar.zst android_bootable_recovery-6014db5da64dae2c9ce6be2f8115db235b75af8a.zip |
Diffstat (limited to 'recovery.cpp')
-rw-r--r-- | recovery.cpp | 72 |
1 files changed, 35 insertions, 37 deletions
diff --git a/recovery.cpp b/recovery.cpp index 4bbc7831e..c2262161a 100644 --- a/recovery.cpp +++ b/recovery.cpp @@ -793,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: @@ -865,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; } |