From 0994532db4335fe9bdc09ca26823e3182e4bb6e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Thu, 25 Jul 2013 18:49:38 +0200 Subject: [PATCH] boot_loader: checks whether mapping rsdt header succeeded. ... and exits in case of failure. Reported by mt in #9895. --- src/system/boot/platform/bios_ia32/acpi.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/system/boot/platform/bios_ia32/acpi.cpp b/src/system/boot/platform/bios_ia32/acpi.cpp index d9207fd38c..388096281b 100644 --- a/src/system/boot/platform/bios_ia32/acpi.cpp +++ b/src/system/boot/platform/bios_ia32/acpi.cpp @@ -114,8 +114,11 @@ acpi_check_rsdt(acpi_rsdp* rsdp) rsdt = (acpi_descriptor_header*)mmu_map_physical_memory( rsdp->rsdt_address, sizeof(acpi_descriptor_header), kDefaultPageFlags); - if (rsdt != NULL - && strncmp(rsdt->signature, ACPI_RSDT_SIGNATURE, 4) != 0) { + if (rsdt == NULL) { + TRACE(("acpi: couldn't map rsdt header\n")); + return B_ERROR; + } + if (strncmp(rsdt->signature, ACPI_RSDT_SIGNATURE, 4) != 0) { mmu_free(rsdt, sizeof(acpi_descriptor_header)); rsdt = NULL; TRACE(("acpi: invalid root system description table\n"));