From 2594dec389106feb8fab744f042f807c11329f9e Mon Sep 17 00:00:00 2001 From: "Enrico Weigelt, metux IT consult" Date: Tue, 6 May 2025 17:14:52 +0200 Subject: [PATCH] Xext: vidmode: protect against alloc failures and NULL pointers Signed-off-by: Enrico Weigelt, metux IT consult --- Xext/vidmode.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Xext/vidmode.c b/Xext/vidmode.c index 06b710288..ff6f954fa 100644 --- a/Xext/vidmode.c +++ b/Xext/vidmode.c @@ -739,7 +739,7 @@ ProcVidModeModModeLine(ClientPtr client) xXF86VidModeModModeLineReq newstuff; ScreenPtr pScreen; VidModePtr pVidMode; - DisplayModePtr mode, modetmp; + DisplayModePtr mode; int len, dotClock; int ver; @@ -805,7 +805,10 @@ ProcVidModeModModeLine(ClientPtr client) if (!pVidMode->GetCurrentModeline(pScreen, &mode, &dotClock)) return BadValue; - modetmp = VidModeCreateMode(); + DisplayModePtr modetmp = VidModeCreateMode(); + if (!modetmp) + return BadAlloc; + VidModeCopyMode(mode, modetmp); VidModeSetModeValue(modetmp, VIDMODE_H_DISPLAY, stuff->hdisplay); @@ -949,6 +952,9 @@ ProcVidModeValidateModeLine(ClientPtr client) return BadValue; modetmp = VidModeCreateMode(); + if (!modetmp) + return BadAlloc; + VidModeCopyMode(mode, modetmp); VidModeSetModeValue(modetmp, VIDMODE_H_DISPLAY, stuff->hdisplay); @@ -1370,7 +1376,7 @@ ProcVidModeGetDotClocks(ClientPtr client) swapl(&rep.flags); } WriteToClient(client, sizeof(xXF86VidModeGetDotClocksReply), &rep); - if (!ClockProg) { + if (!ClockProg && Clocks) { for (n = 0; n < numClocks; n++) { dotclock = Clocks[n]; if (client->swapped) {