On 10/24/23 07:53, Xu, Wei6 wrote: > The MmCoreFfsFindMmDriver only checks for encapsulated compressed FVs. > When an inner FV is uncompressed, StandaloneMmCore will miss the FV and > all the MM drivers in the FV will not be dispatched. > Add checks for uncompressed inner FV to fix this issue. > > Cc: Ard Biesheuvel <ardb+tianoc...@kernel.org> > Cc: Sami Mujawar <sami.muja...@arm.com> > Cc: Ray Ni <ray...@intel.com> > Signed-off-by: Wei6 Xu <wei6...@intel.com> > --- > StandaloneMmPkg/Core/FwVol.c | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/StandaloneMmPkg/Core/FwVol.c b/StandaloneMmPkg/Core/FwVol.c > index 1f6d7714ba97..1a85d80eb9f7 100644 > --- a/StandaloneMmPkg/Core/FwVol.c > +++ b/StandaloneMmPkg/Core/FwVol.c > @@ -104,6 +104,17 @@ MmCoreFfsFindMmDriver ( > break; > } > > + Status = FfsFindSectionData ( > + EFI_SECTION_FIRMWARE_VOLUME_IMAGE, > + FileHeader, > + &SectionData, > + &SectionDataSize > + ); > + if (!EFI_ERROR (Status)) { > + InnerFvHeader = (EFI_FIRMWARE_VOLUME_HEADER *)SectionData; > + MmCoreFfsFindMmDriver (InnerFvHeader); > + } > + > Status = FfsFindSectionData ( > EFI_SECTION_GUID_DEFINED, > FileHeader,
I'd recommend fixing other, more foundational issues first, in this function, such as: - memory leaks on error paths - unbounded recursion - missing object size checks before casting pointers to header types At the same time I agree that this change doesn't seem to make things worse than they are. Laszlo -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#109998): https://edk2.groups.io/g/devel/message/109998 Mute This Topic: https://groups.io/mt/102152694/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/leave/9847357/21656/1706620634/xyzzy [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-