avoid undefined behaviour adding integers
authorTony Cook <tony@develop-help.com>
Thu, 21 Feb 2013 03:37:20 +0000 (14:37 +1100)
committerTony Cook <tony@develop-help.com>
Thu, 21 Feb 2013 03:37:20 +0000 (14:37 +1100)
bmp.c
imdatatypes.h

diff --git a/bmp.c b/bmp.c
index 0e8fe8e..61a7d82 100644 (file)
--- a/bmp.c
+++ b/bmp.c
@@ -741,7 +741,7 @@ read_1bit_bmp(io_glue *ig, int xsize, int ysize, int clr_used,
     return NULL;
   }
 
-  if (xsize + 8 < xsize) { /* if there was overflow */
+  if ((i_img_dim)((i_img_dim_u)xsize + 8) < xsize) { /* if there was overflow */
     /* we check with 8 because we allocate that much for the decoded 
        line buffer */
     i_push_error(0, "integer overflow during memory allocation");
index a7419ea..1fa7c0b 100644 (file)
@@ -41,6 +41,7 @@ May be larger than int on some platforms.
 */
 
 typedef ptrdiff_t i_img_dim;
+typedef size_t i_img_dim_u;
 
 /*
 =item i_color