From 5667feb0ac8c2efa6c46aff171e2768245978ed1 Mon Sep 17 00:00:00 2001 From: Alessandro Astone Date: Sat, 4 May 2019 20:06:48 +0200 Subject: [PATCH] recovery: wipe bootloader message from index 0 when using custom offsets * We may use a custom offset to: a) preserve data that oem wrote to the first bytes of misc b) skip recovery flags written by the bootloader (e.g. --wipe_data) For case a) one should set the offset 'x' to be at least greater than the size of bootloader_message struct (2048 bytes). If this is the case, then we zero out bytes x ~ x + 2047 For case b) one should set the offset to be strictly smaller than the size of bootloader_message struct. If this is the case, then we zero out bytes 0 ~ 2047. This allows to clear any additional flag set by the bootloader, that would otherwise be forgotten in misc. This also guarantees that we do not involountarily wipe any data that the oem may have written starting at byte 2048 (coff coff LG) Change-Id: I2d4e0702a2d8cbbef6274a87ce9499b0f69310dd --- bootloader_message_twrp/bootloader_message.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/bootloader_message_twrp/bootloader_message.cpp b/bootloader_message_twrp/bootloader_message.cpp index b97f66e3..db8c5ce5 100644 --- a/bootloader_message_twrp/bootloader_message.cpp +++ b/bootloader_message_twrp/bootloader_message.cpp @@ -220,6 +220,9 @@ bool clear_bootloader_message(void* err) { bool clear_bootloader_message(std::string* err) { bootloader_message boot = {}; + if (BOOTLOADER_MESSAGE_OFFSET_IN_MISC < sizeof(bootloader_message)) { + return write_misc_partition(&boot, sizeof(boot), 0 /* offset */, err); + } return write_bootloader_message(boot, err); }