Attention is currently required from: Jason Glenesk, Fred Reitberger.
Felix Held has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/68848 )
Change subject: mb/amd/mandolin: handle invalid intr_index values in init_tables ......................................................................
mb/amd/mandolin: handle invalid intr_index values in init_tables
Make sure that the intr_index is valid to avoid out-of-bounds writes to the fch_pic_routing and fch_apic_routing arrays.
Signed-off-by: Felix Held felix-coreboot@felixheld.de Change-Id: I45ab115f3814b212243c4f6cf706daf77b6ff3b2 --- M src/mainboard/amd/mandolin/mainboard.c 1 file changed, 19 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/48/68848/1
diff --git a/src/mainboard/amd/mandolin/mainboard.c b/src/mainboard/amd/mandolin/mainboard.c index 1eb3329..397179a 100644 --- a/src/mainboard/amd/mandolin/mainboard.c +++ b/src/mainboard/amd/mandolin/mainboard.c @@ -69,6 +69,12 @@ memset(fch_apic_routing, PIRQ_NC, sizeof(fch_apic_routing));
for (i = 0; i < mb_fch_irq_mapping_table_size; i++) { + if (mb_irq_map[i].intr_index >= FCH_IRQ_ROUTING_ENTRIES) { + printk(BIOS_WARNING, + "Invalid IRQ index %u in FCH IRQ routing table entry %zu\n", + mb_irq_map[i].intr_index, i); + continue; + } fch_pic_routing[mb_irq_map[i].intr_index] = mb_irq_map[i].pic_irq_num; fch_apic_routing[mb_irq_map[i].intr_index] = mb_irq_map[i].apic_irq_num; }