Nico Huber has uploaded this change for review.

View Change

[NEEDS TEST] region: Check for overflows after offset calculation

As we currently do not know where overflows actually happen, this needs
testing to avoid boot failures due to potential bugs somewhere else.

Change-Id: Ia6054e6e9b6f13502351a2d94c8a0af15266e43e
Signed-off-by: Nico Huber <nico.h@gmx.de>
---
M src/commonlib/region.c
1 file changed, 2 insertions(+), 1 deletion(-)

git pull ssh://review.coreboot.org:29418/coreboot refs/changes/45/79945/1
diff --git a/src/commonlib/region.c b/src/commonlib/region.c
index 4153f0a..9dc6637 100644
--- a/src/commonlib/region.c
+++ b/src/commonlib/region.c
@@ -22,7 +22,8 @@
static int normalize_and_ok(const struct region *outer, struct region *inner)
{
inner->offset += region_offset(outer);
- return region_is_subregion(outer, inner);
+ return region_end(inner) - 1 >= region_offset(inner) &&
+ region_is_subregion(outer, inner);
}

static const struct region_device *rdev_root(const struct region_device *rdev)

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

Gerrit-Project: coreboot
Gerrit-Branch: main
Gerrit-Change-Id: Ia6054e6e9b6f13502351a2d94c8a0af15266e43e
Gerrit-Change-Number: 79945
Gerrit-PatchSet: 1
Gerrit-Owner: Nico Huber <nico.h@gmx.de>
Gerrit-MessageType: newchange