Module Name: src
Committed By: msaitoh
Date: Fri Aug 18 09:49:24 UTC 2017
Modified Files:
src/usr.sbin/acpitools/acpidump: acpi.c
Log Message:
Check DSDT signature in acpi_handle_fadt() for broken ACPI table.
To generate a diff of this commit:
cvs rdiff -u -r1.16 -r1.17 src/usr.sbin/acpitools/acpidump/acpi.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/usr.sbin/acpitools/acpidump/acpi.c
diff -u src/usr.sbin/acpitools/acpidump/acpi.c:1.16 src/usr.sbin/acpitools/acpidump/acpi.c:1.17
--- src/usr.sbin/acpitools/acpidump/acpi.c:1.16 Fri Aug 4 06:30:36 2017
+++ src/usr.sbin/acpitools/acpidump/acpi.c Fri Aug 18 09:49:24 2017
@@ -1,4 +1,4 @@
-/* $NetBSD: acpi.c,v 1.16 2017/08/04 06:30:36 msaitoh Exp $ */
+/* $NetBSD: acpi.c,v 1.17 2017/08/18 09:49:24 msaitoh Exp $ */
/*-
* Copyright (c) 1998 Doug Rabson
@@ -30,7 +30,7 @@
*/
#include <sys/cdefs.h>
-__RCSID("$NetBSD: acpi.c,v 1.16 2017/08/04 06:30:36 msaitoh Exp $");
+__RCSID("$NetBSD: acpi.c,v 1.17 2017/08/18 09:49:24 msaitoh Exp $");
#include <sys/param.h>
#include <sys/endian.h>
@@ -775,6 +775,8 @@ acpi_handle_fadt(ACPI_TABLE_HEADER *sdp)
dsdp = (ACPI_TABLE_HEADER *)acpi_map_sdt(fadt->Dsdt);
else
dsdp = (ACPI_TABLE_HEADER *)acpi_map_sdt(fadt->XDsdt);
+ if (memcmp(dsdp->Signature, ACPI_SIG_DSDT, 4) != 0)
+ errx(EXIT_FAILURE, "DSDT signature mismatch");
if (acpi_checksum(dsdp, dsdp->Length))
errx(EXIT_FAILURE, "DSDT is corrupt");
acpi_print_dsdt(dsdp);