Reviewed-by: jiewen....@intel.com

> -----Original Message-----
> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Star
> Zeng
> Sent: Monday, January 15, 2018 10:35 AM
> To: edk2-devel@lists.01.org
> Cc: Yao, Jiewen <jiewen....@intel.com>; Zeng, Star <star.z...@intel.com>
> Subject: [edk2] [PATCH] 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 installed. So the RSDT/XSDT parsing code should check the entry value
> first before checking the table signature.
> 
> Cc: Jiewen Yao <jiewen....@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Star Zeng <star.z...@intel.com>
> ---
>  IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmarAcpiTable.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmarAcpiTable.c
> b/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmarAcpiTable.c
> index b981bcdb3aa0..342830a01fb0 100644
> --- a/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmarAcpiTable.c
> +++ b/IntelSiliconPkg/Feature/VTd/IntelVTdDxe/DmarAcpiTable.c
> @@ -1,6 +1,6 @@
>  /** @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
>    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
> @@ -889,7 +889,7 @@ ScanTableInRSDT (
>    EntryPtr = &Rsdt->Entry;
>    for (Index = 0; Index < EntryCount; Index ++, EntryPtr ++) {
>      Table = (EFI_ACPI_DESCRIPTION_HEADER*)((UINTN)(*EntryPtr));
> -    if (Table->Signature == Signature) {
> +    if ((Table != NULL) && (Table->Signature == Signature)) {
>        return Table;
>      }
>    }
> @@ -923,7 +923,7 @@ ScanTableInXSDT (
>    for (Index = 0; Index < EntryCount; Index ++) {
>      CopyMem (&EntryPtr, (VOID *)(BasePtr + Index * sizeof(UINT64)),
> sizeof(UINT64));
>      Table = (EFI_ACPI_DESCRIPTION_HEADER*)((UINTN)(EntryPtr));
> -    if (Table->Signature == Signature) {
> +    if ((Table != NULL) && (Table->Signature == Signature)) {
>        return Table;
>      }
>    }
> --
> 2.7.0.windows.1
> 
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.01.org
> https://lists.01.org/mailman/listinfo/edk2-devel
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to