DecompressGuidedFv() should check if the highest address used during decompression errs into the emulated NVRAM.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Laszlo Ersek <[email protected]> --- OvmfPkg/Sec/SecMain.inf | 1 + OvmfPkg/Sec/SecMain.c | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/OvmfPkg/Sec/SecMain.inf b/OvmfPkg/Sec/SecMain.inf index 91d0a44..f225099 100644 --- a/OvmfPkg/Sec/SecMain.inf +++ b/OvmfPkg/Sec/SecMain.inf @@ -59,6 +59,7 @@ PeCoffGetEntryPointLib PeCoffExtraActionLib ExtractGuidedSectionLib + EmuNvramLib [Ppis] gEfiTemporaryRamSupportPpiGuid # PPI ALWAYS_PRODUCED diff --git a/OvmfPkg/Sec/SecMain.c b/OvmfPkg/Sec/SecMain.c index 3882dad..4faddbf 100644 --- a/OvmfPkg/Sec/SecMain.c +++ b/OvmfPkg/Sec/SecMain.c @@ -28,6 +28,7 @@ #include <Library/PeCoffGetEntryPointLib.h> #include <Library/PeCoffExtraActionLib.h> #include <Library/ExtractGuidedSectionLib.h> +#include <Library/EmuNvramLib.h> #include <Ppi/TemporaryRamSupport.h> @@ -327,6 +328,11 @@ DecompressGuidedFv ( //PcdGet32 (PcdOvmfMemFvBase), PcdGet32 (PcdOvmfMemFvSize) OutputBuffer = (VOID*) ((UINT8*)(UINTN) PcdGet32 (PcdOvmfMemFvBase) + SIZE_1MB); ScratchBuffer = ALIGN_POINTER ((UINT8*) OutputBuffer + OutputBufferSize, SIZE_1MB); + + if (EmuNvramSize () != 0) { + ASSERT ((UINTN) ScratchBuffer + ScratchBufferSize <= EmuNvramBase ()); + } + Status = ExtractGuidedSectionDecode ( Section, &OutputBuffer, -- 1.8.3.1 ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
