Xext: vidmode: protect against alloc failures and NULL pointers

Signed-off-by: Enrico Weigelt, metux IT consult <info@metux.net>
This commit is contained in:
Enrico Weigelt, metux IT consult 2025-05-06 17:14:52 +02:00
parent cd13a40667
commit 2594dec389

View File

@ -739,7 +739,7 @@ ProcVidModeModModeLine(ClientPtr client)
xXF86VidModeModModeLineReq newstuff; xXF86VidModeModModeLineReq newstuff;
ScreenPtr pScreen; ScreenPtr pScreen;
VidModePtr pVidMode; VidModePtr pVidMode;
DisplayModePtr mode, modetmp; DisplayModePtr mode;
int len, dotClock; int len, dotClock;
int ver; int ver;
@ -805,7 +805,10 @@ ProcVidModeModModeLine(ClientPtr client)
if (!pVidMode->GetCurrentModeline(pScreen, &mode, &dotClock)) if (!pVidMode->GetCurrentModeline(pScreen, &mode, &dotClock))
return BadValue; return BadValue;
modetmp = VidModeCreateMode(); DisplayModePtr modetmp = VidModeCreateMode();
if (!modetmp)
return BadAlloc;
VidModeCopyMode(mode, modetmp); VidModeCopyMode(mode, modetmp);
VidModeSetModeValue(modetmp, VIDMODE_H_DISPLAY, stuff->hdisplay); VidModeSetModeValue(modetmp, VIDMODE_H_DISPLAY, stuff->hdisplay);
@ -949,6 +952,9 @@ ProcVidModeValidateModeLine(ClientPtr client)
return BadValue; return BadValue;
modetmp = VidModeCreateMode(); modetmp = VidModeCreateMode();
if (!modetmp)
return BadAlloc;
VidModeCopyMode(mode, modetmp); VidModeCopyMode(mode, modetmp);
VidModeSetModeValue(modetmp, VIDMODE_H_DISPLAY, stuff->hdisplay); VidModeSetModeValue(modetmp, VIDMODE_H_DISPLAY, stuff->hdisplay);
@ -1370,7 +1376,7 @@ ProcVidModeGetDotClocks(ClientPtr client)
swapl(&rep.flags); swapl(&rep.flags);
} }
WriteToClient(client, sizeof(xXF86VidModeGetDotClocksReply), &rep); WriteToClient(client, sizeof(xXF86VidModeGetDotClocksReply), &rep);
if (!ClockProg) { if (!ClockProg && Clocks) {
for (n = 0; n < numClocks; n++) { for (n = 0; n < numClocks; n++) {
dotclock = Clocks[n]; dotclock = Clocks[n];
if (client->swapped) { if (client->swapped) {