Skip runtime relocation for PE images that provide invalid relocation infomation (ex: RelocDir->Size = 0) to fix a hang observed while booting Windows.
Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Neo Hsueh <hong-chihx.hs...@intel.com> Cc: Michael D Kinney <michael.d.kin...@intel.com> Cc: Liming Gao <liming....@intel.com> Cc: Dandan Bi <dandan...@intel.com> Cc: Laszlo Ersek <ler...@redhat.com> --- MdePkg/Library/BasePeCoffLib/BasePeCoff.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/MdePkg/Library/BasePeCoffLib/BasePeCoff.c b/MdePkg/Library/BasePeCoffLib/BasePeCoff.c index 1bd079ad6a..f01c691dea 100644 --- a/MdePkg/Library/BasePeCoffLib/BasePeCoff.c +++ b/MdePkg/Library/BasePeCoffLib/BasePeCoff.c @@ -1746,6 +1746,12 @@ PeCoffLoaderRelocateImageForRuntime ( RelocDir->VirtualAddress + RelocDir->Size - 1, 0 ); + if (RelocBase == NULL || RelocBaseEnd == NULL || RelocBaseEnd < RelocBase) { + // + // relocation block is not valid, just return + // + return; + } } else { // // Cannot find relocations, cannot continue to relocate the image, ASSERT for this invalid image. -- 2.16.2.windows.1 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel