summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/Gfx
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-04-18 18:34:33 +0200
committerAmlal El Mahrouss <amlal@nekernel.org>2025-04-18 18:34:33 +0200
commit6d99a232379317afed814a023fee464001f796ea (patch)
tree8f8e5602fba26ea22ac97dddaaf5157dc6d02f97 /dev/kernel/src/Gfx
parentb69c498953dc47900e6ccdd0f501727480836f23 (diff)
kernel, GfxKit: FIX: Check boundaries to avoid page fault.
Signed-off-by: Amlal El Mahrouss <amlal@nekernel.org>
Diffstat (limited to 'dev/kernel/src/Gfx')
-rw-r--r--dev/kernel/src/Gfx/FBDeviceInterface.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/dev/kernel/src/Gfx/FBDeviceInterface.cc b/dev/kernel/src/Gfx/FBDeviceInterface.cc
index a9b2be29..525f32b4 100644
--- a/dev/kernel/src/Gfx/FBDeviceInterface.cc
+++ b/dev/kernel/src/Gfx/FBDeviceInterface.cc
@@ -29,6 +29,13 @@ FBDeviceInterface& FBDeviceInterface::operator<<(FBDevicePacket* pckt)
if (!pckt)
return *this;
+ if (pckt->fHeight == 0 || pckt->fWidth == 0)
+ return *this;
+
+ if (pckt->fX > kHandoverHeader->f_GOP.f_Width ||
+ pckt->fY > kHandoverHeader->f_GOP.f_Height)
+ return *this;
+
FBDrawInRegion(pckt->fColor, pckt->fHeight, pckt->fWidth, pckt->fY, pckt->fX);
return *this;
@@ -42,6 +49,10 @@ FBDeviceInterface& FBDeviceInterface::operator>>(FBDevicePacket* pckt)
if (!pckt)
return *this;
+ if (pckt->fX > kHandoverHeader->f_GOP.f_Width ||
+ pckt->fY > kHandoverHeader->f_GOP.f_Height)
+ return *this;
+
pckt->fColor = *(((Kernel::UInt32*)(kHandoverHeader->f_GOP.f_The +
4 * kHandoverHeader->f_GOP.f_PixelPerLine *
pckt->fX +