56 lines
1.4 KiB
Plaintext
56 lines
1.4 KiB
Plaintext
$OpenBSD: patch-xwindow_x_imagelib_gdk_c,v 1.2 2012/12/14 18:33:03 naddy Exp $
|
|
--- xwindow/x_imagelib_gdk.c.orig Fri May 7 07:43:53 2004
|
|
+++ xwindow/x_imagelib_gdk.c Fri Dec 14 19:31:46 2012
|
|
@@ -294,6 +294,12 @@ create_cardinals_from_bixbuf(
|
|
unsigned char *pixel ;
|
|
int i, j ;
|
|
|
|
+ if( !width || !height)
|
|
+ return -1;
|
|
+
|
|
+ if( width > ((SIZE_MAX / 4) - 2) / height)
|
|
+ return -1; /* integer overflow */
|
|
+
|
|
*cardinal = malloc( (width * height + 2) *4) ;
|
|
if( !(*cardinal))
|
|
return -1 ;
|
|
@@ -356,7 +362,7 @@ closest_color_index(
|
|
int blue
|
|
)
|
|
{
|
|
- int closest ;
|
|
+ int closest = 0 ;
|
|
int i ;
|
|
unsigned long min = 0xffffff ;
|
|
unsigned long diff ;
|
|
@@ -831,6 +837,9 @@ pixbuf_to_ximage_truecolor(
|
|
|
|
width = gdk_pixbuf_get_width( pixbuf) ;
|
|
height = gdk_pixbuf_get_height( pixbuf) ;
|
|
+
|
|
+ if( !width || !height)
|
|
+ return NULL ;
|
|
|
|
r_mask = vinfo[0].red_mask ;
|
|
g_mask = vinfo[0].green_mask ;
|
|
@@ -851,6 +860,9 @@ pixbuf_to_ximage_truecolor(
|
|
int r_limit, g_limit, b_limit ;
|
|
u_int16_t *data ;
|
|
|
|
+ if( width > (SIZE_MAX / 2) / height)
|
|
+ return NULL ;
|
|
+
|
|
data = (u_int16_t *)malloc( width * height * 2) ;
|
|
if( !data)
|
|
return NULL ;
|
|
@@ -883,6 +895,9 @@ pixbuf_to_ximage_truecolor(
|
|
{
|
|
u_int32_t * data ;
|
|
|
|
+ if( width > (SIZE_MAX / 4) / height)
|
|
+ return NULL;
|
|
+
|
|
data = (u_int32_t *)malloc( width * height * 4) ;
|
|
if( !data)
|
|
return NULL;
|