pmaports/temp/android-tools/0001-fastboot-don-t-die-if-can-t-parse-boot-part-size.patch
Oliver Smith 9bc3f5a161
temp/android-tools: fork from alpine with flash boot fix (MR 2142)
This patch fixes:
  fastboot: error: Couldn't parse partition size '0x'.

I don't get the bug myself, but it was reported that this works as
expected. Let's merge it to pmaports temporarily while it's getting
upstreamed.

Related: https://github.com/nmeum/android-tools/pull/27
Related: pmbootstrap issue 2007
[ci:skip-build]: already built successfully in CI
2021-05-05 01:15:53 +02:00

43 lines
1.7 KiB
Diff

From ee81c8aff8276d489c4271a89d44c62ff0b516d5 Mon Sep 17 00:00:00 2001
From: Oliver Smith <ollieparanoid@postmarketos.org>
Date: Wed, 28 Apr 2021 23:37:46 +0200
Subject: [PATCH] fastboot: don't die if can't parse boot part size
Don't crash in copy_boot_avb_footer() if bootloaders do not properly
expose the size of the boot partition.
This makes "fastboot flasher boot" usable again on lots of
non-avb-devices, where it has been broken since
I5a5e25fb54dc9d6a2930fda63434968808ffa1f0.
Related: https://gitlab.com/postmarketOS/pmbootstrap/-/issues/2007
Change-Id: I0825bdad0f541ec0b073900b02d2cf7966aa9ce7
---
vendor/core/fastboot/fastboot.cpp | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/vendor/core/fastboot/fastboot.cpp b/vendor/core/fastboot/fastboot.cpp
index 679aec8..38a0e3b 100644
--- a/vendor/core/fastboot/fastboot.cpp
+++ b/vendor/core/fastboot/fastboot.cpp
@@ -1017,13 +1017,15 @@ static void copy_boot_avb_footer(const std::string& partition, struct fastboot_b
std::string partition_size_str;
if (fb->GetVar("partition-size:" + partition, &partition_size_str) != fastboot::SUCCESS) {
- die("cannot get boot partition size");
+ verbose("cannot get boot partition size, assuming non-avb device");
+ return;
}
partition_size_str = fb_fix_numeric_var(partition_size_str);
int64_t partition_size;
if (!android::base::ParseInt(partition_size_str, &partition_size)) {
- die("Couldn't parse partition size '%s'.", partition_size_str.c_str());
+ verbose("Couldn't parse partition size '%s', assuming non-avb device", partition_size_str.c_str());
+ return;
}
if (partition_size == buf->sz) {
return;
--
2.20.1