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
diff --git a/bootloader_message_twrp/bootloader_message.cpp b/bootloader_message_twrp/bootloader_message.cpp
index b97f66e..db8c5ce 100644
--- a/bootloader_message_twrp/bootloader_message.cpp
+++ b/bootloader_message_twrp/bootloader_message.cpp
@@ -220,6 +220,9 @@
 
 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);
 }