diff --git a/recovery_main.cpp b/recovery_main.cpp index 99f96509..020a5314 100644 --- a/recovery_main.cpp +++ b/recovery_main.cpp @@ -97,8 +97,13 @@ static std::vector get_args(const int argc, char** const argv) { } stage = std::string(boot.stage); + std::string boot_command; if (boot.command[0] != 0) { - std::string boot_command = std::string(boot.command, sizeof(boot.command)); + if (memchr(boot.command, '\0', sizeof(boot.command))) { + boot_command = std::string(boot.command); + } else { + boot_command = std::string(boot.command, sizeof(boot.command)); + } LOG(INFO) << "Boot command: " << boot_command; } @@ -149,6 +154,12 @@ static std::vector get_args(const int argc, char** const argv) { LOG(ERROR) << "Failed to set BCB message: " << err; } + // Finally, if no arguments were specified, check whether we should boot + // into fastboot. + if (args.size() == 1 && boot_command == "boot-fastboot") { + args.emplace_back("--fastboot"); + } + return args; }