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