Fail on fastboot-info.txt format error
If fastboot-info.txt has wrong format we should not fall back on
hardcoded list silently. Instead we should LOG(FATAL) and fail.
Hardcoded list should only be used when fastboot-info.txt is not found
or is empty
Test: fastboot flashall
Bug: 194686221
Change-Id: I1cada102f3ff12c1f3002d0b61d3785fc25543c1
diff --git a/fastboot/fastboot.cpp b/fastboot/fastboot.cpp
index 73884ab..f09616a 100644
--- a/fastboot/fastboot.cpp
+++ b/fastboot/fastboot.cpp
@@ -1724,8 +1724,6 @@
}
auto task = ParseFastbootInfoLine(fp, command);
if (!task) {
- LOG(ERROR) << "Error when parsing fastboot-info.txt, falling back on Hardcoded list: "
- << text;
return {};
}
tasks.emplace_back(std::move(task));
@@ -1751,8 +1749,6 @@
}
std::vector<std::unique_ptr<Task>> ParseFastbootInfo(const FlashingPlan* fp, std::ifstream& fs) {
- if (!fs || fs.eof()) return {};
-
std::string text;
std::vector<std::string> file;
// Get os_partitions that need to be resized
@@ -1783,13 +1779,17 @@
std::string path = find_item_given_name("fastboot-info.txt");
std::ifstream stream(path);
- std::vector<std::unique_ptr<Task>> tasks = ParseFastbootInfo(fp_, stream);
- if (tasks.empty()) {
+ if (!stream || stream.eof()) {
LOG(VERBOSE) << "Flashing from hardcoded images. fastboot-info.txt is empty or does not "
"exist";
HardcodedFlash();
return;
}
+
+ std::vector<std::unique_ptr<Task>> tasks = ParseFastbootInfo(fp_, stream);
+ if (tasks.empty()) {
+ LOG(FATAL) << "Invalid fastboot-info.txt file.";
+ }
LOG(VERBOSE) << "Flashing from fastboot-info.txt";
for (auto& task : tasks) {
task->Run();