]> granicus.if.org Git - imagemagick/commitdiff
Avoid possible deadlock
authorCristy <urban-warrior@imagemagick.org>
Sat, 24 Feb 2018 16:59:21 +0000 (11:59 -0500)
committerCristy <urban-warrior@imagemagick.org>
Sat, 24 Feb 2018 16:59:21 +0000 (11:59 -0500)
coders/caption.c
coders/label.c

index 57c97fcdbc2c8d5a169a84752b88ba12c6111b07..a953ed2cc8ef8bae3569f3a40f59981de0323998 100644 (file)
@@ -231,6 +231,8 @@ static Image *ReadCAPTIONImage(const ImageInfo *image_info,
         if (draw_info->gravity == UndefinedGravity)
           (void) CloneString(&draw_info->geometry,geometry);
         status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception);
+        if (status == MagickFalse)
+          break;
         width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);
         height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);
         if ((image->columns != 0) && (image->rows != 0))
@@ -257,6 +259,8 @@ static Image *ReadCAPTIONImage(const ImageInfo *image_info,
         if (draw_info->gravity == UndefinedGravity)
           (void) CloneString(&draw_info->geometry,geometry);
         status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception);
+        if (status == MagickFalse)
+          break;
         width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);
         height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);
         if ((image->columns != 0) && (image->rows != 0))
index 866beb8e24e5cf8b22a7ab3bcc9653ad67556041..e4b9b707dcde6ee0ec643c5455970520c139cd92 100644 (file)
@@ -150,16 +150,21 @@ static Image *ReadLABELImage(const ImageInfo *image_info,
           high,
           low;
 
+        ssize_t
+          n;
+
         /*
           Auto fit text into bounding box.
         */
-        for ( ; ; draw_info->pointsize*=2.0)
+        for (n=0; n < 32; n++, draw_info->pointsize*=2.0)
         {
           (void) FormatLocaleString(geometry,MagickPathExtent,"%+g%+g",
             -metrics.bounds.x1,metrics.ascent);
           if (draw_info->gravity == UndefinedGravity)
             (void) CloneString(&draw_info->geometry,geometry);
           status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception);
+          if (status == MagickFalse)
+            break;
           width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);
           height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);
           if ((image->columns != 0) && (image->rows != 0))
@@ -181,6 +186,8 @@ static Image *ReadLABELImage(const ImageInfo *image_info,
           if (draw_info->gravity == UndefinedGravity)
             (void) CloneString(&draw_info->geometry,geometry);
           status=GetMultilineTypeMetrics(image,draw_info,&metrics,exception);
+          if (status == MagickFalse)
+            break;
           width=(size_t) floor(metrics.width+draw_info->stroke_width+0.5);
           height=(size_t) floor(metrics.height+draw_info->stroke_width+0.5);
           if ((image->columns != 0) && (image->rows != 0))