DigitalDJ has uploaded this change for review.

View Change

erasure_layout: Fix init_eraseblock segmentation fault

Fix a segmentation fault that is caused by accessing an invalid "subedata"
pointer on the last iteration of the init_eraseblock loop. Instead, short
circuit the condition and do not access the invalid pointer if it is the
last sub block.

BUG=https://ticket.coreboot.org/issues/555

Change-Id: I61bf0d93aa9f0b2b420b146be16fcd5124f0dc5d
Signed-off-by: Grant Pannell <grant@digitaldj.net>
---
M erasure_layout.c
1 file changed, 2 insertions(+), 2 deletions(-)

git pull ssh://review.coreboot.org:29418/flashrom refs/changes/34/84234/1
diff --git a/erasure_layout.c b/erasure_layout.c
index a7eaa2d..0a64030 100644
--- a/erasure_layout.c
+++ b/erasure_layout.c
@@ -52,8 +52,8 @@

edata->first_sub_block_index = *sub_block_index;
struct eraseblock_data *subedata = &layout[idx - 1].layout_list[*sub_block_index];
- while (subedata->start_addr >= start_addr && subedata->end_addr <= end_addr &&
- *sub_block_index < layout[idx-1].block_count) {
+ while (*sub_block_index < layout[idx-1].block_count &&
+ subedata->start_addr >= start_addr && subedata->end_addr <= end_addr) {
(*sub_block_index)++;
subedata++;
}

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

Gerrit-MessageType: newchange
Gerrit-Project: flashrom
Gerrit-Branch: main
Gerrit-Change-Id: I61bf0d93aa9f0b2b420b146be16fcd5124f0dc5d
Gerrit-Change-Number: 84234
Gerrit-PatchSet: 1
Gerrit-Owner: DigitalDJ