From 856cf5abf701c148a07e21660feff5f8ccf7fb79 Mon Sep 17 00:00:00 2001 From: Sami Mujawar Date: Thu, 24 Sep 2020 10:51:34 +0100 Subject: [PATCH] ShellPkg/AcpiView: Fix field validator invocation Bugzilla: 3046 (https://bugzilla.tianocore.org/show_bug.cgi?id=3046) The field validator function provides means to validate fields in the ACPI table structures. To print complex field types a print formatter function is provided. The field validator was being invoked for simple data fields for which the default print format is used. However, the field validator function was not invoked if a print formatter function was provided. This problem is noticed when a Generic Address Structure (GAS) is printed using DumpGas() and a field validator is present to validate the GAS structure. To fix this move the invocation of the field validator after the field is printed such that the validation function is called even when a print formatter function is present. Signed-off-by: Sami Mujawar Reviewed-by: Zhichao Gao --- .../UefiShellAcpiViewCommandLib/AcpiParser.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c index 02f6d771c7..01ac9a9baf 100644 --- a/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c +++ b/ShellPkg/Library/UefiShellAcpiViewCommandLib/AcpiParser.c @@ -1,7 +1,7 @@ /** @file ACPI parser - Copyright (c) 2016 - 2020, ARM Limited. All rights reserved. + Copyright (c) 2016 - 2020, Arm Limited. All rights reserved. SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -596,13 +596,12 @@ ParseAcpi ( Parser[Index].Length ); } // switch - - // Validating only makes sense if we are tracing - // the parsed table entries, to report by table name. - if (GetConsistencyChecking () && - (Parser[Index].FieldValidator != NULL)) { - Parser[Index].FieldValidator (Ptr, Parser[Index].Context); - } + } + // Validating only makes sense if we are tracing + // the parsed table entries, to report by table name. + if (GetConsistencyChecking () && + (Parser[Index].FieldValidator != NULL)) { + Parser[Index].FieldValidator (Ptr, Parser[Index].Context); } Print (L"\n"); } // if (Trace) -- 2.39.2