if the ffs size is invalid, break the iteration and return NOT_FOUND.

Cc: Ray Ni< ray...@intel.com>
Cc: Bob Feng <bob.c.f...@intel.com>
Cc: Liming Gao <liming....@intel.com>

Change-Id: I9e320d6176af350ff208901209f3f6c89e4e1924
Signed-off-by: Yunhua Feng <yunhuax.f...@intel.com>
---
 BaseTools/Source/C/FMMT/FmmtLib.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/BaseTools/Source/C/FMMT/FmmtLib.c 
b/BaseTools/Source/C/FMMT/FmmtLib.c
index 9ec511ef06..6858cfe778 100644
--- a/BaseTools/Source/C/FMMT/FmmtLib.c
+++ b/BaseTools/Source/C/FMMT/FmmtLib.c
@@ -1769,10 +1769,17 @@ FvBufFindNextFile (
       (*Key + sizeof (*fhdr)) < fvSize;
       *Key = (UINTN)ALIGN_POINTER (*Key, 8)
     ) {
     fhdr = (EFI_FFS_FILE_HEADER*) ((UINT8*)hdr + *Key);
     fsize = GetFfsFileLength (fhdr);
+    //
+    //if the ffs size is invalid, break the loop
+    //the size defined in EFI_FFS_FILE_HEADER is 3 bytes.
+    //
+    if (fsize == (UINTN)((FvbAttributes & EFI_FVB2_ERASE_POLARITY) ? 0xFFFFFF 
: 0x0)) {
+      break;
+    }
     if (!EFI_TEST_FFS_ATTRIBUTES_BIT(
           FvbAttributes,
           fhdr->State,
           EFI_FILE_HEADER_VALID
         ) ||
--
2.12.2.windows.2


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.

View/Reply Online (#58948): https://edk2.groups.io/g/devel/message/58948
Mute This Topic: https://groups.io/mt/74091408/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub  [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to