summaryrefslogtreecommitdiffstats
path: root/layout.c
diff options
context:
space:
mode:
authorNico Huber <nico.h@gmx.de>2018-12-22 00:53:14 +0100
committerNico Huber <nico.h@gmx.de>2019-04-02 16:42:53 +0000
commit3d7b1e3b5c04304d3680bd950e7672f6336b01d6 (patch)
treef316ba1bd2474850ff3267ff1acbbb2b9c7336cd /layout.c
parent0cacb11c6252b6e1f4f0a2a33b47717ff22995d9 (diff)
downloadflashrom-3d7b1e3b5c04304d3680bd950e7672f6336b01d6.tar.gz
flashrom-3d7b1e3b5c04304d3680bd950e7672f6336b01d6.tar.bz2
flashrom-3d7b1e3b5c04304d3680bd950e7672f6336b01d6.zip
Fix verification with sparse layouts
The full verification step was not accounting for sparse layouts. Instead of the old contents, combine_image_by_layout() implicitly assumed the new contents for unspecified regions. Change-Id: I44e0cea621f2a3d4dc70fa7e93c52ed95e54014a Signed-off-by: Nico Huber <nico.h@gmx.de> Reviewed-on: https://review.coreboot.org/c/flashrom/+/30370 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Philipp Deppenwiese <zaolin.daisuki@gmail.com>
Diffstat (limited to 'layout.c')
-rw-r--r--layout.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/layout.c b/layout.c
index e10bb735a..5080e3ed7 100644
--- a/layout.c
+++ b/layout.c
@@ -227,3 +227,21 @@ int normalize_romentries(const struct flashctx *flash)
return ret;
}
+
+const struct romentry *layout_next_included_region(
+ const struct flashrom_layout *const l, const chipoff_t where)
+{
+ unsigned int i;
+ const struct romentry *lowest = NULL;
+
+ for (i = 0; i < l->num_entries; ++i) {
+ if (!l->entries[i].included)
+ continue;
+ if (l->entries[i].end < where)
+ continue;
+ if (!lowest || lowest->start > l->entries[i].start)
+ lowest = &l->entries[i];
+ }
+
+ return lowest;
+}