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 <jaben.carsey@intel.com>
Cc: Ray Ni <ray.ni@intel.com>
Cc: Zhichao Gao <zhichao.gao@intel.com>
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Zhichao Gao <zhichao.gao@intel.com>
This commit is contained in:
Dandan Bi
2019-05-27 19:25:09 -07:00
committed by Jaben Carsey
parent 4eb0acb1e2
commit fc7d997c35

View File

@ -1,7 +1,7 @@
/** @file /** @file
Module for clarifying the content of the smbios structure element info. Module for clarifying the content of the smbios structure element info.
Copyright (c) 2005 - 2011, Intel Corporation. All rights reserved. <BR> Copyright (c) 2005 - 2019, Intel Corporation. All rights reserved. <BR>
SPDX-License-Identifier: BSD-2-Clause-Patent SPDX-License-Identifier: BSD-2-Clause-Patent
**/ **/
@ -347,16 +347,12 @@ DisplaySysEventLogData (
Offset = 0; Offset = 0;
Log = (LOG_RECORD_FORMAT *) LogData; Log = (LOG_RECORD_FORMAT *) LogData;
while (Log != NULL && Log->Type != END_OF_LOG && Offset < LogAreaLength) { while (Log != NULL && Log->Type != END_OF_LOG && Offset < LogAreaLength) {
//
// Get a Event Log Record
//
Log = (LOG_RECORD_FORMAT *) (LogData + Offset);
if (Log != NULL) { if (Log != NULL) {
// //
// Display Event Log Record Information // Display Event Log Record Information
// //
DisplaySELVarDataFormatType (Log->Type, SHOW_DETAIL); DisplaySELTypes (Log->Type, SHOW_DETAIL);
DisplaySELLogHeaderLen (Log->Length, SHOW_DETAIL); DisplaySELLogHeaderLen (Log->Length, SHOW_DETAIL);
Offset += Log->Length; Offset += Log->Length;
@ -373,6 +369,10 @@ DisplaySysEventLogData (
Print (L"20"); Print (L"20");
} else { } else {
ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ERROR), gShellDebug1HiiHandle); ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_EVENTLOGINFO_ERROR), gShellDebug1HiiHandle);
//
// Get a Event Log Record
//
Log = (LOG_RECORD_FORMAT *) (LogData + Offset);
continue; continue;
} }
@ -391,11 +391,19 @@ DisplaySysEventLogData (
// Display Variable Data Format // Display Variable Data Format
// //
if (Log->Length <= (sizeof (LOG_RECORD_FORMAT) - 1)) { if (Log->Length <= (sizeof (LOG_RECORD_FORMAT) - 1)) {
//
// Get a Event Log Record
//
Log = (LOG_RECORD_FORMAT *) (LogData + Offset);
continue; continue;
} }
ElVdfType = Log->LogVariableData[0]; ElVdfType = Log->LogVariableData[0];
DisplayElVdfInfo (ElVdfType, Log->LogVariableData); DisplayElVdfInfo (ElVdfType, Log->LogVariableData);
//
// Get a Event Log Record
//
Log = (LOG_RECORD_FORMAT *) (LogData + Offset);
} }
} }
} }