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]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to