1
0
mirror of https://review.coreboot.org/flashrom.git synced 2025-09-05 21:12:16 +02:00

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>
This commit is contained in:
Grant Pannell
2024-09-06 22:35:53 +09:30
parent 2c573640f3
commit 5d480dff0f

View File

@@ -52,8 +52,8 @@ static void init_eraseblock(struct erase_layout *layout, size_t idx, size_t bloc
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++;
}