mirror of
https://review.coreboot.org/flashrom.git
synced 2025-09-06 05:20:43 +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:
@@ -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;
|
edata->first_sub_block_index = *sub_block_index;
|
||||||
struct eraseblock_data *subedata = &layout[idx - 1].layout_list[*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 &&
|
while (*sub_block_index < layout[idx-1].block_count &&
|
||||||
*sub_block_index < layout[idx-1].block_count) {
|
subedata->start_addr >= start_addr && subedata->end_addr <= end_addr) {
|
||||||
(*sub_block_index)++;
|
(*sub_block_index)++;
|
||||||
subedata++;
|
subedata++;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user