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);