CVE-2008-2360 - RENDER Extension heap buffer overflow
An integer overflow may occur in the computation of the size of the glyph to be allocated by the AllocateGlyph() function which will cause less memory to be allocated than expected, leading to later heap overflow.
This commit is contained in:
		
							parent
							
								
									063f18ef6d
								
							
						
					
					
						commit
						c5f69b297b
					
				| 
						 | 
				
			
			@ -1117,9 +1117,16 @@ ProcRenderAddGlyphs (ClientPtr client)
 | 
			
		|||
    remain -= (sizeof (CARD32) + sizeof (xGlyphInfo)) * nglyphs;
 | 
			
		||||
    for (i = 0; i < nglyphs; i++)
 | 
			
		||||
    {
 | 
			
		||||
	size_t padded_width;
 | 
			
		||||
	glyph_new = &glyphs[i];
 | 
			
		||||
	size = gi[i].height * PixmapBytePad (gi[i].width,
 | 
			
		||||
					     glyphSet->format->depth);
 | 
			
		||||
 | 
			
		||||
	padded_width = PixmapBytePad (gi[i].width,
 | 
			
		||||
				      glyphSet->format->depth);
 | 
			
		||||
 | 
			
		||||
	if (gi[i].height && padded_width > (UINT32_MAX - sizeof(GlyphRec))/gi[i].height)
 | 
			
		||||
	    break;
 | 
			
		||||
	
 | 
			
		||||
	size = gi[i].height * padded_width;
 | 
			
		||||
	if (remain < size)
 | 
			
		||||
	    break;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue