vmware_vga: Check cursor dimensions passed from guest to avoid buffer overflow
Check that the cursor dimensions passed from the guest for the
DEFINE_CURSOR command don't overflow the available space in the
cursor.image[] or cursor.mask[] arrays before copying data from the
guest into those arrays.
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
(cherry picked from commit f2d928d44e)
			
			
This commit is contained in:
		
							parent
							
								
									de3ea06d59
								
							
						
					
					
						commit
						e1daf40e3e
					
				| 
						 | 
					@ -562,6 +562,13 @@ static void vmsvga_fifo_run(struct vmsvga_state_s *s)
 | 
				
			||||||
            cursor.height = y = vmsvga_fifo_read(s);
 | 
					            cursor.height = y = vmsvga_fifo_read(s);
 | 
				
			||||||
            vmsvga_fifo_read(s);
 | 
					            vmsvga_fifo_read(s);
 | 
				
			||||||
            cursor.bpp = vmsvga_fifo_read(s);
 | 
					            cursor.bpp = vmsvga_fifo_read(s);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						    if (SVGA_BITMAP_SIZE(x, y) > sizeof cursor.mask ||
 | 
				
			||||||
 | 
							SVGA_PIXMAP_SIZE(x, y, cursor.bpp) > sizeof cursor.image) {
 | 
				
			||||||
 | 
							    args = SVGA_BITMAP_SIZE(x, y) + SVGA_PIXMAP_SIZE(x, y, cursor.bpp);
 | 
				
			||||||
 | 
							    goto badcmd;
 | 
				
			||||||
 | 
						    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for (args = 0; args < SVGA_BITMAP_SIZE(x, y); args ++)
 | 
					            for (args = 0; args < SVGA_BITMAP_SIZE(x, y); args ++)
 | 
				
			||||||
                cursor.mask[args] = vmsvga_fifo_read_raw(s);
 | 
					                cursor.mask[args] = vmsvga_fifo_read_raw(s);
 | 
				
			||||||
            for (args = 0; args < SVGA_PIXMAP_SIZE(x, y, cursor.bpp); args ++)
 | 
					            for (args = 0; args < SVGA_PIXMAP_SIZE(x, y, cursor.bpp); args ++)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue