soc/amd/common/fsp/fsp-acpi: add check for maximum table size

If the ACPI table size in the HOB data header is larger than the maximum
HOB payload, don't add the table at all and print an error instead,
since in this case the memcpy would read past the end of the HOB data
structure.

Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Change-Id: I965c01bd9ab66b14d6f77b6f23c28479ae6d6a50
Reviewed-on: https://review.coreboot.org/c/coreboot/+/52897
Reviewed-by: Jason Glenesk <jason.glenesk@amd.corp-partner.google.com>
Reviewed-by: Raul Rangel <rrangel@chromium.org>
Reviewed-by: Marshall Dawson <marshalldawson3rd@gmail.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Felix Held 2021-05-04 20:18:41 +02:00
parent 245adcab13
commit 75a2355a19
1 changed files with 6 additions and 0 deletions

View File

@ -28,6 +28,12 @@ uintptr_t add_agesa_fsp_acpi_table(guid_t guid, const char *name, acpi_rsdp_t *r
return current; return current;
} }
if (data->table_size_in_bytes > sizeof(data->hob_payload)) {
printk(BIOS_ERR, "AGESA %s ACPI table size larger than maximum HOB payload "
"size.\n", name);
return current;
}
printk(BIOS_INFO, "ACPI: * %s (AGESA).\n", name); printk(BIOS_INFO, "ACPI: * %s (AGESA).\n", name);
memcpy(table, data->hob_payload, data->table_size_in_bytes); memcpy(table, data->hob_payload, data->table_size_in_bytes);