mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-05 12:54:24 +02:00
IntelSiliconPkg IntelVTdDxe: Fix potential NULL pointer dereference
The implementation of MdeModulePkg\Universal\Acpi\AcpiTableDxe reserves first entry of RSDT/XSDT to FADT, the first entry value is 0 when FADT is not installed. So the RSDT/XSDT parsing code should check the entry value first before checking the table signature. Cc: Jiewen Yao <jiewen.yao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
This commit is contained in:
parent
b721aa749b
commit
01bd1c98fa
@ -1,6 +1,6 @@
|
|||||||
/** @file
|
/** @file
|
||||||
|
|
||||||
Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2017 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
are licensed and made available under the terms and conditions of the BSD License
|
||||||
which accompanies this distribution. The full text of the license may be found at
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
@ -889,7 +889,7 @@ ScanTableInRSDT (
|
|||||||
EntryPtr = &Rsdt->Entry;
|
EntryPtr = &Rsdt->Entry;
|
||||||
for (Index = 0; Index < EntryCount; Index ++, EntryPtr ++) {
|
for (Index = 0; Index < EntryCount; Index ++, EntryPtr ++) {
|
||||||
Table = (EFI_ACPI_DESCRIPTION_HEADER*)((UINTN)(*EntryPtr));
|
Table = (EFI_ACPI_DESCRIPTION_HEADER*)((UINTN)(*EntryPtr));
|
||||||
if (Table->Signature == Signature) {
|
if ((Table != NULL) && (Table->Signature == Signature)) {
|
||||||
return Table;
|
return Table;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -923,7 +923,7 @@ ScanTableInXSDT (
|
|||||||
for (Index = 0; Index < EntryCount; Index ++) {
|
for (Index = 0; Index < EntryCount; Index ++) {
|
||||||
CopyMem (&EntryPtr, (VOID *)(BasePtr + Index * sizeof(UINT64)), sizeof(UINT64));
|
CopyMem (&EntryPtr, (VOID *)(BasePtr + Index * sizeof(UINT64)), sizeof(UINT64));
|
||||||
Table = (EFI_ACPI_DESCRIPTION_HEADER*)((UINTN)(EntryPtr));
|
Table = (EFI_ACPI_DESCRIPTION_HEADER*)((UINTN)(EntryPtr));
|
||||||
if (Table->Signature == Signature) {
|
if ((Table != NULL) && (Table->Signature == Signature)) {
|
||||||
return Table;
|
return Table;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user