Thomas Heijligen submitted this change.

View Change


Approvals: build bot (Jenkins): Verified Thomas Heijligen: Looks good to me, approved Edward O'Callaghan: Looks good to me, approved
fmap: ignore areas with zero size

It's impossible for flashrom_layout to represent zero-sized flash
regions but it is possible for a fmap to contain a zero-sized region
which causes the resulting layout to fail layout_sanity_checks(),
preventing use of that fmap.

Because it would very rarely make sense to be able to operate on
zero-sized regions anyway and changing layouts to be able to support
zero-size regions would entail large changes, instead ignore zero-size
regions when present in fmap.

TEST=Warning is now printed when using fmap that contains a zero-sized
area, and operations on other regions are allowed to proceed.
BUG=b:271933192

Change-Id: Ie20971f779acece7a0b3b8f38796fff128ce689a
Signed-off-by: Peter Marheine <pmarheine@chromium.org>
Reviewed-on: https://review.coreboot.org/c/flashrom/+/73571
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Thomas Heijligen <src@posteo.de>
Reviewed-by: Edward O'Callaghan <quasisec@chromium.org>
---
M libflashrom.c
1 file changed, 38 insertions(+), 0 deletions(-)

diff --git a/libflashrom.c b/libflashrom.c
index 2e89fe5..4a59e2a 100644
--- a/libflashrom.c
+++ b/libflashrom.c
@@ -362,6 +362,16 @@
return 1;

for (i = 0, area = fmap->areas; i < fmap->nareas; i++, area++) {
+ if (area->size == 0) {
+ /* Layout regions use inclusive upper and lower bounds,
+ * so it's impossible to represent a region with zero
+ * size although it's allowed in fmap. */
+ msg_gwarn("Ignoring zero-size fmap region \"%s\";"
+ " empty regions are unsupported.\n",
+ area->name);
+ continue;
+ }
+
snprintf(name, sizeof(name), "%s", area->name);
if (flashrom_layout_add_region(l, area->offset, area->offset + area->size - 1, name)) {
flashrom_layout_release(l);

To view, visit change 73571. To unsubscribe, or for help writing mail filters, visit settings.

Gerrit-Project: flashrom
Gerrit-Branch: master
Gerrit-Change-Id: Ie20971f779acece7a0b3b8f38796fff128ce689a
Gerrit-Change-Number: 73571
Gerrit-PatchSet: 2
Gerrit-Owner: Peter Marheine <pmarheine@chromium.org>
Gerrit-Reviewer: Edward O'Callaghan <quasisec@chromium.org>
Gerrit-Reviewer: Thomas Heijligen <src@posteo.de>
Gerrit-Reviewer: build bot (Jenkins) <no-reply@coreboot.org>
Gerrit-MessageType: merged