]> granicus.if.org Git - imagemagick/commitdiff
https://github.com/ImageMagick/ImageMagick/issues/872
authorCristy <urban-warrior@imagemagick.org>
Wed, 22 Nov 2017 15:04:23 +0000 (10:04 -0500)
committerCristy <urban-warrior@imagemagick.org>
Wed, 22 Nov 2017 15:04:23 +0000 (10:04 -0500)
coders/png.c

index 4f440bf6e251fa32e25fe855cb5fc5efea960222..f6a7c3109aec82d8c840c9f51b8a60e07b71f1c4 100644 (file)
@@ -1785,6 +1785,7 @@ Magick_png_read_raw_profile(png_struct *ping,Image *image,
     sp;
 
   png_uint_32
+    extent,
     length,
     nibbles;
 
@@ -1800,16 +1801,16 @@ Magick_png_read_raw_profile(png_struct *ping,Image *image,
                  13,14,15};
 
   sp=text[ii].text+1;
-  length=text[ii].text_length;
+  extent=text[ii].text_length;
   /* look for newline */
-  while ((*sp != '\n') && length--)
+  while ((*sp != '\n') && extent--)
     sp++;
 
   /* look for length */
-  while (((*sp == '\0' || *sp == ' ' || *sp == '\n')) && length--)
+  while (((*sp == '\0' || *sp == ' ' || *sp == '\n')) && extent--)
      sp++;
 
-  if (length == 0)
+  if (extent == 0)
     {
       png_warning(ping,"invalid profile length");
       return(MagickFalse);
@@ -1820,8 +1821,14 @@ Magick_png_read_raw_profile(png_struct *ping,Image *image,
   (void) LogMagickEvent(CoderEvent,GetMagickModule(),
        "      length: %lu",(unsigned long) length);
 
-  while (*sp != ' ' && *sp != '\n')
-     sp++;
+  while ((*sp != ' ' && *sp != '\n') && extent--)
+    sp++;
+
+  if (extent == 0)
+    {
+      png_warning(ping,"invalid profile length");
+      return(MagickFalse);
+    }
 
   /* allocate space */
   if (length == 0)