mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 05:04:02 +02:00
The existing coreboot_table_populate() bounds checks limit individual
entries to the mapped length. However, coreboot_table_probe() replaces
the platform resource length with header and table sizes supplied by
firmware before mapping the full table.
A malformed table can overflow the 32-bit size addition or advertise an
extent beyond the resource, causing the driver to map and parse memory
outside the resource. A resource shorter than the fixed header is also
mapped as though it contained a complete header.
Reject resources shorter than the fixed header. After validating the
signature, require a complete header, calculate the advertised extent
with overflow checking, and reject extents beyond the resource before
remapping the table.
Fixes:
|
||
|---|---|---|
| .. | ||
| cbmem.c | ||
| coreboot_table.c | ||
| coreboot_table.h | ||
| framebuffer-coreboot.c | ||
| gsmi.c | ||
| Kconfig | ||
| Makefile | ||
| memconsole-coreboot.c | ||
| memconsole-x86-legacy.c | ||
| memconsole.c | ||
| memconsole.h | ||
| vpd_decode.c | ||
| vpd_decode.h | ||
| vpd.c | ||