0ee4bc0f62
- edk2-OvmfPkg-VirtioGpuDxe-ignore-display-resolutions-smal.patch [RHEL-56249] - edk2-OvmfPkg-QemuVideoDxe-ignore-display-resolutions-smal.patch [RHEL-56249] - edk2-MdePkg-Fix-overflow-issue-in-BasePeCoffLib.patch [RHEL-60829] - Resolves: RHEL-56249 (507x510 display resolution should not crash the firmware [edk2,rhel-10]) - Resolves: RHEL-60829 (CVE-2024-38796 edk2: Integer overflows in PeCoffLoaderRelocateImage [rhel-10.0])
66 lines
1.9 KiB
Diff
66 lines
1.9 KiB
Diff
From 0ddcdbae55f2dd6bbd4c4893ecfc0feeb21b9d91 Mon Sep 17 00:00:00 2001
|
|
From: Gerd Hoffmann <kraxel@redhat.com>
|
|
Date: Fri, 23 Aug 2024 14:36:16 +0200
|
|
Subject: [PATCH 2/3] OvmfPkg/QemuVideoDxe: ignore display resolutions smaller
|
|
than 640x480
|
|
|
|
RH-Author: Gerd Hoffmann <None>
|
|
RH-MergeRequest: 73: ignore display resolutions smaller than 640x480
|
|
RH-Jira: RHEL-56249
|
|
RH-Acked-by: Oliver Steffen <osteffen@redhat.com>
|
|
RH-Commit: [2/2] 95d973e06f759c00637831a9521063794ce5cf28 (kraxel.rh/centos-src-edk2)
|
|
|
|
GraphicsConsoleDxe will assert in case the resolution is too small.
|
|
|
|
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
|
|
(cherry picked from commit 391666da2c1dc5671bbb3393079d86f46e3435af)
|
|
---
|
|
OvmfPkg/QemuVideoDxe/Initialize.c | 18 ++++++++++++++----
|
|
1 file changed, 14 insertions(+), 4 deletions(-)
|
|
|
|
diff --git a/OvmfPkg/QemuVideoDxe/Initialize.c b/OvmfPkg/QemuVideoDxe/Initialize.c
|
|
index 050ae878ec..2d1f50637f 100644
|
|
--- a/OvmfPkg/QemuVideoDxe/Initialize.c
|
|
+++ b/OvmfPkg/QemuVideoDxe/Initialize.c
|
|
@@ -293,6 +293,8 @@ QemuVideoBochsEdid (
|
|
)
|
|
{
|
|
EFI_STATUS Status;
|
|
+ UINT32 X;
|
|
+ UINT32 Y;
|
|
|
|
if (Private->Variant != QEMU_VIDEO_BOCHS_MMIO) {
|
|
return;
|
|
@@ -344,16 +346,24 @@ QemuVideoBochsEdid (
|
|
return;
|
|
}
|
|
|
|
- *XRes = Private->Edid[56] | ((Private->Edid[58] & 0xf0) << 4);
|
|
- *YRes = Private->Edid[59] | ((Private->Edid[61] & 0xf0) << 4);
|
|
+ X = Private->Edid[56] | ((Private->Edid[58] & 0xf0) << 4);
|
|
+ Y = Private->Edid[59] | ((Private->Edid[61] & 0xf0) << 4);
|
|
DEBUG ((
|
|
DEBUG_INFO,
|
|
"%a: default resolution: %dx%d\n",
|
|
__func__,
|
|
- *XRes,
|
|
- *YRes
|
|
+ X,
|
|
+ Y
|
|
));
|
|
|
|
+ if ((X < 640) || (Y < 480)) {
|
|
+ /* ignore hint, GraphicsConsoleDxe needs 640x480 or larger */
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ *XRes = X;
|
|
+ *YRes = Y;
|
|
+
|
|
if (PcdGet8 (PcdVideoResolutionSource) == 0) {
|
|
Status = PcdSet32S (PcdVideoHorizontalResolution, *XRes);
|
|
ASSERT_RETURN_ERROR (Status);
|
|
--
|
|
2.39.3
|
|
|