]> granicus.if.org Git - imagemagick/commitdiff
https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=7525
authorCristy <urban-warrior@imagemagick.org>
Wed, 11 Apr 2018 00:03:26 +0000 (20:03 -0400)
committerCristy <urban-warrior@imagemagick.org>
Wed, 11 Apr 2018 00:03:26 +0000 (20:03 -0400)
coders/caption.c
coders/label.c

index a953ed2cc8ef8bae3569f3a40f59981de0323998..fb1e2fb975ed1263ac0fc2be0d43f24d041f2faf 100644 (file)
@@ -58,6 +58,7 @@
 #include "MagickCore/option.h"
 #include "MagickCore/property.h"
 #include "MagickCore/quantum-private.h"
+#include "MagickCore/resource_.h"
 #include "MagickCore/static.h"
 #include "MagickCore/string_.h"
 #include "MagickCore/string-private.h"
@@ -155,6 +156,12 @@ static Image *ReadCAPTIONImage(const ImageInfo *image_info,
   property=DestroyString(property);
   caption=ConstantString(GetImageProperty(image,"caption",exception));
   draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL);
+  width=draw_info->pointsize*strlen(caption);
+  if (AcquireMagickResource(WidthResource,width) == MagickFalse)
+    {
+      draw_info=DestroyDrawInfo(draw_info);
+      ThrowReaderException(ImageError,"WidthOrHeightExceedsLimit");
+    }
   (void) CloneString(&draw_info->text,caption);
   gravity=GetImageOption(image_info,"gravity");
   if (gravity != (char *) NULL)
index 0a4201114a0a956ff3ec08315a5c6bdd81bb8f42..c6b0294d29b06f4ecbf5c9f2368e5be52fbf0624 100644 (file)
@@ -54,6 +54,7 @@
 #include "MagickCore/memory_.h"
 #include "MagickCore/property.h"
 #include "MagickCore/quantum-private.h"
+#include "MagickCore/resource_.h"
 #include "MagickCore/static.h"
 #include "MagickCore/string_.h"
 #include "MagickCore/module.h"
@@ -134,6 +135,12 @@ static Image *ReadLABELImage(const ImageInfo *image_info,
   property=DestroyString(property);
   label=GetImageProperty(image,"label",exception);
   draw_info=CloneDrawInfo(image_info,(DrawInfo *) NULL);
+  width=draw_info->pointsize*strlen(label);
+  if (AcquireMagickResource(WidthResource,width) == MagickFalse)
+    {
+      draw_info=DestroyDrawInfo(draw_info);
+      ThrowReaderException(ImageError,"WidthOrHeightExceedsLimit");
+    }
   draw_info->text=ConstantString(label);
   metrics.width=0.0;
   metrics.height=0.0;