acpidump: warn and exit loop on invalid subtable length

Submitted by:	Guangyuan Yang <yzgyyang@outlook.com>
Sponsored by:	The FreeBSD Foundation
This commit is contained in:
Ed Maste 2017-07-06 14:35:47 +00:00
parent d9ad2b357b
commit f5d0a8f7c7
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=320736

View File

@ -270,6 +270,10 @@ acpi_walk_subtables(ACPI_TABLE_HEADER *table, void *first,
end = (char *)table + table->Length;
while ((char *)subtable < end) {
printf("\n");
if (subtable->Length < sizeof(ACPI_SUBTABLE_HEADER)) {
warnx("invalid subtable length %u", subtable->Length);
return;
}
action(subtable);
subtable = (ACPI_SUBTABLE_HEADER *)((char *)subtable +
subtable->Length);