mirror of https://github.com/ipxe/ipxe.git
[pixbuf] Check for unsigned integer overflow on multiplication
Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/44/head
parent
5a6ed90a00
commit
11396473f5
|
@ -65,6 +65,10 @@ struct pixel_buffer * alloc_pixbuf ( unsigned int width, unsigned int height ) {
|
|||
pixbuf->height = height;
|
||||
pixbuf->len = ( width * height * sizeof ( uint32_t ) );
|
||||
|
||||
/* Check for multiplication overflow */
|
||||
if ( ( ( pixbuf->len / sizeof ( uint32_t ) ) / width ) != height )
|
||||
goto err_overflow;
|
||||
|
||||
/* Allocate pixel data buffer */
|
||||
pixbuf->data = umalloc ( pixbuf->len );
|
||||
if ( ! pixbuf->data )
|
||||
|
@ -73,6 +77,7 @@ struct pixel_buffer * alloc_pixbuf ( unsigned int width, unsigned int height ) {
|
|||
return pixbuf;
|
||||
|
||||
err_alloc_data:
|
||||
err_overflow:
|
||||
pixbuf_put ( pixbuf );
|
||||
err_alloc_pixbuf:
|
||||
return NULL;
|
||||
|
|
Loading…
Reference in New Issue