summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMary Ruthven <mruthven@chromium.org>2023-03-15 11:50:58 -0500
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-05-03 19:40:38 +0000
commit589eecdafc6be3da8d53d875f59b50a83571114d (patch)
treeb1e0a1b80043ad209ebb238cbbc3a9b51a52ca10
parent9f362a787f5172256745885902924c6c4a2cf441 (diff)
downloadchrome-ec-589eecdafc6be3da8d53d875f59b50a83571114d.tar.gz
gsctool: modify RO_A handling for DBG images
BUG=b:273510573 TEST=gsctool -b dbg.bin Change-Id: I3de2687491add2d63532e028d3d62a318ce6d13a Signed-off-by: Mary Ruthven <mruthven@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4342809 Reviewed-by: Andrey Pronin <apronin@chromium.org> Commit-Queue: Andrey Pronin <apronin@chromium.org> (cherry picked from commit dff1ae07a1a35b0862b36d1e23e36b38682c5bdd) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4482189 Reviewed-by: Jett Rink <jettrink@chromium.org> (cherry picked from commit 0a7d01de0b570feaa61dde6a95cf8a773e593b87) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4501313
-rw-r--r--extra/usb_updater/gsctool.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/extra/usb_updater/gsctool.c b/extra/usb_updater/gsctool.c
index 4584c2bb82..b7fc2c02e2 100644
--- a/extra/usb_updater/gsctool.c
+++ b/extra/usb_updater/gsctool.c
@@ -1302,11 +1302,23 @@ static bool fetch_header_versions(const void *image)
sections[i].offset);
if (h->image_size < CONFIG_FLASH_BANK_SIZE) {
- fprintf(stderr,
- "Image at offset %#5x too short (%d bytes)\n",
- sections[i].offset,
- h->image_size);
- return false;
+ /*
+ * Return an error for incorrectly signed images. If
+ * it's a RO image with 0 as its size, ignore the error.
+ *
+ * TODO(b/273510573): revisit after dbg versioning is
+ * figured out.
+ */
+ if (h->image_size || sections[i].offset) {
+ fprintf(stderr,
+ "Image at offset %#5x too short "
+ "(%d bytes)\n",
+ sections[i].offset,
+ h->image_size);
+ return false;
+ }
+
+ printf("warning: invalid RO_A (size 0)\n");
}
sections[i].shv.epoch = h->epoch_;
sections[i].shv.major = h->major_;