From b38180effe5384c683f180aa5b899f3354c86818 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Wed, 2 Oct 2024 15:44:15 +0100 Subject: [PATCH] ShellPkg/AcpiView: RAS2 Parser - check validity of PCC Count This checks the number of PCC descriptor entries provided match the count set in the table, and if they don't indicate a warning. Signed-off-by: Carsten Haitzler --- .../Parsers/Ras2/Ras2Parser.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Ras2/Ras2Parser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Ras2/Ras2Parser.c index 38bd15d95f..06ac5cdabc 100644 --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Ras2/Ras2Parser.c +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/Parsers/Ras2/Ras2Parser.c @@ -83,7 +83,9 @@ ParseAcpiRas2 ( IN UINT8 AcpiTableRevision ) { - UINT32 Offset; + UINT32 Offset; + UINT16 Count = 0; + CONST CHAR16 *Message; if (!Trace) { return; @@ -111,5 +113,18 @@ ParseAcpiRas2 ( sizeof (EFI_ACPI_RAS2_PCC_DESCRIPTOR) ); Offset += sizeof (EFI_ACPI_RAS2_PCC_DESCRIPTOR); + Count++; } // while + + // Check counts match and print error if not + if (Count != *Ras2PccDescriptors) { + Message = Count > *Ras2PccDescriptors ? L"many" : L"few"; + IncrementWarningCount (); + Print ( + L"\nWARNING: Too %s descriptors provided (advertised %d, provided %d)", + Message, + *Ras2PccDescriptors, + Count + ); + } }