diff options
author | Roy Luo <royluo@google.com> | 2024-04-05 18:06:52 +0000 |
---|---|---|
committer | Roy Luo <royluo@google.com> | 2024-04-05 18:11:24 +0000 |
commit | cdcdf52e7cc75082ebe337aa133176954bdcb4a2 (patch) | |
tree | fea163bacca5b5959d0aa25af22e40fa3adbe7de | |
parent | 5aee6aca72b7cbf53566c91eb5734716a8286d3f (diff) | |
download | recovery-cdcdf52e7cc75082ebe337aa133176954bdcb4a2.tar.gz |
recovery: do not update bootloader message for boot-fastboot
When booting to fastbootd using bootloader message:
boot.command=boot-fastboot, the boot command get overwritten to
boot-recovery by update_bootloader_message. If the daemon crash for
whatever reason before the bootloader message got clear, the daemon
would start in adb recovery mode instead of fastbootd after it
respawns. Only update bootloader message for boot-recovery command.
Bug: 332973437
Test: boot to fastbootd
Change-Id: I5747c62cf50d2347894d266f2665035f15ae5da0
-rw-r--r-- | recovery_main.cpp | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/recovery_main.cpp b/recovery_main.cpp index cb3f0c13..903a3173 100644 --- a/recovery_main.cpp +++ b/recovery_main.cpp @@ -155,9 +155,13 @@ static std::vector<std::string> get_args(const int argc, char** const argv, std: // Write the arguments (excluding the filename in args[0]) back into the // bootloader control block. So the device will always boot into recovery to // finish the pending work, until FinishRecovery() is called. - std::vector<std::string> options(args.cbegin() + 1, args.cend()); - if (!update_bootloader_message(options, &err)) { - LOG(ERROR) << "Failed to set BCB message: " << err; + // This should only be done for boot-recovery command so that other commands + // won't be overwritten. + if (boot_command == "boot-recovery") { + std::vector<std::string> options(args.cbegin() + 1, args.cend()); + if (!update_bootloader_message(options, &err)) { + LOG(ERROR) << "Failed to set BCB message: " << err; + } } // Finally, if no arguments were specified, check whether we should boot |