Some RAW ffs parse section for check UI section will encounter dead loop. Actually when FFS is raw FFS, not include UI section.
Change-Id: I40e1cbb988bed30d8757008bad9074bc11eae135 Cc: Bob Feng <bob.c.f...@intel.com> Cc: Liming Gao <liming....@intel.com> Signed-off-by: Yunhua Feng <yunhuax.f...@intel.com> --- BaseTools/Source/C/FMMT/FirmwareModuleManagement.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/BaseTools/Source/C/FMMT/FirmwareModuleManagement.c b/BaseTools/Source/C/FMMT/FirmwareModuleManagement.c index 89a7533deb..c8a53d3def 100644 --- a/BaseTools/Source/C/FMMT/FirmwareModuleManagement.c +++ b/BaseTools/Source/C/FMMT/FirmwareModuleManagement.c @@ -1,10 +1,10 @@ /** @file FMMT main routine. -Copyright (c) 2019, Intel Corporation. All rights reserved.<BR> +Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.<BR> SPDX-License-Identifier: BSD-2-Clause-Patent **/ #include "FirmwareModuleManagement.h" @@ -750,10 +750,16 @@ ParseSection ( UISectionFlag = FALSE; Ptr = NULL; SectionLength = 0; ParsedLength = GetFfsHeaderLength((EFI_FFS_FILE_HEADER *)InputFfs); FfsFileSize = GetFfsFileLength((EFI_FFS_FILE_HEADER *)InputFfs); + // + //if RAW ffs, return FALSE + // + if (((EFI_FFS_FILE_HEADER*)InputFfs)->Type == EFI_FV_FILETYPE_RAW) { + return UISectionFlag; + } while (ParsedLength < FfsFileSize) { Ptr = (UINT8 *)InputFfs + ParsedLength; SectionLength = GetLength (((EFI_COMMON_SECTION_HEADER *) Ptr)->Size); Type = ((EFI_COMMON_SECTION_HEADER *) Ptr)->Type; -- 2.12.2.windows.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#61396): https://edk2.groups.io/g/devel/message/61396 Mute This Topic: https://groups.io/mt/74933847/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-