diff options
author | Peter Marheine <pmarheine@chromium.org> | 2023-03-08 09:27:40 +1100 |
---|---|---|
committer | Thomas Heijligen <src@posteo.de> | 2023-03-14 10:40:02 +0000 |
commit | dcd8ad0dcb077cec8791f4f9d8d5eed9f4db86e3 (patch) | |
tree | 1d8b53f96d1ba24a7813454fa6df73c198121a7e /libflashrom.c | |
parent | 0e8902f1ff2b927bb91a5e89e4fde3d8d71f6692 (diff) | |
download | flashrom-dcd8ad0dcb077cec8791f4f9d8d5eed9f4db86e3.tar.gz flashrom-dcd8ad0dcb077cec8791f4f9d8d5eed9f4db86e3.tar.bz2 flashrom-dcd8ad0dcb077cec8791f4f9d8d5eed9f4db86e3.zip |
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>
Diffstat (limited to 'libflashrom.c')
-rw-r--r-- | libflashrom.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libflashrom.c b/libflashrom.c index 2e89fe5a6..4a59e2a12 100644 --- a/libflashrom.c +++ b/libflashrom.c @@ -362,6 +362,16 @@ static int flashrom_layout_parse_fmap(struct flashrom_layout **layout, 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); |