From fc7d997c35372126823c3b0acf7b67c45cbeea36 Mon Sep 17 00:00:00 2001 From: Dandan Bi Date: Mon, 27 May 2019 19:25:09 -0700 Subject: [PATCH] ShellPkg/Debug1CommandsLib: Fix bugs in func DisplaySysEventLogData REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1498 This patch fix following bugs in func DisplaySysEventLogData: 1. Log increment (Log = (LOG_RECORD_FORMAT *) (LogData + Offset);) should happened in the end of while loop, not in the very beginning. 2. DisplaySELTypes function should be used in while loop instead of DisplaySELVarDataFormatType. Cc: Jaben Carsey Cc: Ray Ni Cc: Zhichao Gao Signed-off-by: Dandan Bi Reviewed-by: Zhichao Gao --- .../SmbiosView/EventLogInfo.c | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/EventLogInfo.c b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/EventLogInfo.c index b8adf438d3..984c178890 100644 --- a/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/EventLogInfo.c +++ b/ShellPkg/Library/UefiShellDebug1CommandsLib/SmbiosView/EventLogInfo.c @@ -1,7 +1,7 @@ /** @file Module for clarifying the content of the smbios structure element info. - Copyright (c) 2005 - 2011, Intel Corporation. All rights reserved.
+ Copyright (c) 2005 - 2019, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -347,16 +347,12 @@ DisplaySysEventLogData ( Offset = 0; Log = (LOG_RECORD_FORMAT *) LogData; while (Log != NULL && Log->Type != END_OF_LOG && Offset < LogAreaLength) { - // - // Get a Event Log Record - // - Log = (LOG_RECORD_FORMAT *) (LogData + Offset); if (Log != NULL) { // // Display Event Log Record Information // - DisplaySELVarDataFormatType (Log->Type, SHOW_DETAIL); + DisplaySELTypes (Log->Type, SHOW_DETAIL); DisplaySELLogHeaderLen (Log->Length, SHOW_DETAIL); Offset += Log->Length; @@ -373,6 +369,10 @@ DisplaySysEventLogData ( Print (L"20"); } else { ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ERROR), gShellDebug1HiiHandle); + // + // Get a Event Log Record + // + Log = (LOG_RECORD_FORMAT *) (LogData + Offset); continue; } @@ -391,11 +391,19 @@ DisplaySysEventLogData ( // Display Variable Data Format // if (Log->Length <= (sizeof (LOG_RECORD_FORMAT) - 1)) { + // + // Get a Event Log Record + // + Log = (LOG_RECORD_FORMAT *) (LogData + Offset); continue; } ElVdfType = Log->LogVariableData[0]; DisplayElVdfInfo (ElVdfType, Log->LogVariableData); + // + // Get a Event Log Record + // + Log = (LOG_RECORD_FORMAT *) (LogData + Offset); } } } -- 2.39.2