File GraphicsMagick-CVE-2019-12921.patch of Package GraphicsMagick.12851

diff -r f780c290b4ab -r 44e3d0e872eb magick/render.c
--- a/magick/render.c   Thu Jun 06 08:41:00 2019 -0500
+++ b/magick/render.c   Thu Jun 06 08:41:44 2019 -0500
@@ -2477,11 +2477,16 @@
   if (*draw_info->primitive == '\0')
     return(MagickFail);
   (void) LogMagickEvent(RenderEvent,GetMagickModule(),"begin draw-image");
-  if (*draw_info->primitive != '@')
-    primitive=AllocateString(draw_info->primitive);
-  else
+  /*
+    Read primitive from file if supplied primitive starts with '@' and
+    we are not already drawing.
+  */
+  if ((*draw_info->primitive == '@') &&
+      (DrawImageGetCurrentRecurseLevel(image) == 1))
     primitive=(char *)
       FileToBlob(draw_info->primitive+1,&length,&image->exception);
+  else
+    primitive=AllocateString(draw_info->primitive);
   if (primitive == (char *) NULL)
     return(MagickFail);
   primitive_extent=strlen(primitive);

openSUSE Build Service is sponsored by