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:
		
							parent
							
								
									cd13a40667
								
							
						
					
					
						commit
						2594dec389
					
				| 
						 | 
					@ -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) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue