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>
diff --git a/layout.c b/layout.c
index e10bb73..5080e3e 100644
--- a/layout.c
+++ b/layout.c
@@ -227,3 +227,21 @@
 
 	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;
+}