From 75bf10a68914a50b1d5c57f63a8561fa52dc0973 Mon Sep 17 00:00:00 2001 From: Krzysztof Koch Date: Wed, 10 Apr 2019 11:28:55 +0100 Subject: [PATCH] DynamicTablesPkg: Add frame number validation to GTDT generator Added code to check if the Generic Timer Block Structure's frame number provided by the platform repository is within the allowed range (0-7). References: - ACPI 6.2 Errata A, Table 5-122, September 2017 Signed-off-by: Krzysztof Koch Reviewed-by: Alexei Fedorov Reviewed-by: Sami Mujawar --- .../Library/Acpi/Arm/AcpiGtdtLibArm/GtdtGenerator.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/DynamicTablesPkg/Library/Acpi/Arm/AcpiGtdtLibArm/GtdtGenerator.c b/DynamicTablesPkg/Library/Acpi/Arm/AcpiGtdtLibArm/GtdtGenerator.c index 8d9ddcf924..543e6f442f 100644 --- a/DynamicTablesPkg/Library/Acpi/Arm/AcpiGtdtLibArm/GtdtGenerator.c +++ b/DynamicTablesPkg/Library/Acpi/Arm/AcpiGtdtLibArm/GtdtGenerator.c @@ -218,6 +218,15 @@ AddGTBlockTimerFrames ( GtBlockFrame )); + if (GTBlockTimerFrameList->FrameNumber >= 8) { + DEBUG (( + DEBUG_ERROR, + "ERROR: GTDT: Frame number %d is not in the range 0-7\n", + GTBlockTimerFrameList->FrameNumber + )); + return EFI_INVALID_PARAMETER; + } + GtBlockFrame->GTFrameNumber = GTBlockTimerFrameList->FrameNumber; GtBlockFrame->Reserved[0] = EFI_ACPI_RESERVED_BYTE; GtBlockFrame->Reserved[1] = EFI_ACPI_RESERVED_BYTE; -- 2.39.2