From 0447c6b46eb75b4c083e5e9f0a9f12f8457e077d Mon Sep 17 00:00:00 2001 From: Cristy Date: Sat, 11 Nov 2017 08:08:25 -0500 Subject: [PATCH] ... --- MagickCore/draw.c | 87 ++++++++++++++++++++++------------------------- 1 file changed, 41 insertions(+), 46 deletions(-) diff --git a/MagickCore/draw.c b/MagickCore/draw.c index c3604f353..2fcbbf827 100644 --- a/MagickCore/draw.c +++ b/MagickCore/draw.c @@ -2322,13 +2322,11 @@ MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info, continue; break; } - if (p > (q-5)) + if ((size_t) (q-p-4+1) > 0) { - status=MagickFalse; - break; + (void) CopyMagickString(token,p,(size_t) (q-p-4+1)); + (void) SetImageArtifact(image,name,token); } - (void) CopyMagickString(token,p,(size_t) (q-p-4+1)); - (void) SetImageArtifact(image,name,token); GetNextToken(q,&q,extent,token); break; } @@ -2384,36 +2382,35 @@ MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info, continue; break; } - if (p > (q-5)) + if ((size_t) (q-p-4+1) > 0) { - status=MagickFalse; - break; + (void) CopyMagickString(token,p,(size_t) (q-p-4+1)); + bounds.x1=graphic_context[n]->affine.sx*segment.x1+ + graphic_context[n]->affine.ry*segment.y1+ + graphic_context[n]->affine.tx; + bounds.y1=graphic_context[n]->affine.rx*segment.x1+ + graphic_context[n]->affine.sy*segment.y1+ + graphic_context[n]->affine.ty; + bounds.x2=graphic_context[n]->affine.sx*segment.x2+ + graphic_context[n]->affine.ry*segment.y2+ + graphic_context[n]->affine.tx; + bounds.y2=graphic_context[n]->affine.rx*segment.x2+ + graphic_context[n]->affine.sy*segment.y2+ + graphic_context[n]->affine.ty; + (void) FormatLocaleString(key,MagickPathExtent,"%s",name); + (void) SetImageArtifact(image,key,token); + (void) FormatLocaleString(key,MagickPathExtent,"%s-type", + name); + (void) SetImageArtifact(image,key,type); + (void) FormatLocaleString(key,MagickPathExtent, + "%s-geometry",name); + (void) FormatLocaleString(geometry,MagickPathExtent, + "%gx%g%+.15g%+.15g", + MagickMax(fabs(bounds.x2-bounds.x1+1.0),1.0), + MagickMax(fabs(bounds.y2-bounds.y1+1.0),1.0), + bounds.x1,bounds.y1); + (void) SetImageArtifact(image,key,geometry); } - (void) CopyMagickString(token,p,(size_t) (q-p-4+1)); - bounds.x1=graphic_context[n]->affine.sx*segment.x1+ - graphic_context[n]->affine.ry*segment.y1+ - graphic_context[n]->affine.tx; - bounds.y1=graphic_context[n]->affine.rx*segment.x1+ - graphic_context[n]->affine.sy*segment.y1+ - graphic_context[n]->affine.ty; - bounds.x2=graphic_context[n]->affine.sx*segment.x2+ - graphic_context[n]->affine.ry*segment.y2+ - graphic_context[n]->affine.tx; - bounds.y2=graphic_context[n]->affine.rx*segment.x2+ - graphic_context[n]->affine.sy*segment.y2+ - graphic_context[n]->affine.ty; - (void) FormatLocaleString(key,MagickPathExtent,"%s",name); - (void) SetImageArtifact(image,key,token); - (void) FormatLocaleString(key,MagickPathExtent,"%s-type",name); - (void) SetImageArtifact(image,key,type); - (void) FormatLocaleString(key,MagickPathExtent,"%s-geometry", - name); - (void) FormatLocaleString(geometry,MagickPathExtent, - "%gx%g%+.15g%+.15g", - MagickMax(fabs(bounds.x2-bounds.x1+1.0),1.0), - MagickMax(fabs(bounds.y2-bounds.y1+1.0),1.0), - bounds.x1,bounds.y1); - (void) SetImageArtifact(image,key,geometry); GetNextToken(q,&q,extent,token); break; } @@ -2464,21 +2461,19 @@ MagickExport MagickBooleanType DrawImage(Image *image,const DrawInfo *draw_info, continue; break; } - if (p > (q-5)) + if ((size_t) (q-p-4+1) > 0) { - status=MagickFalse; - break; + (void) CopyMagickString(token,p,(size_t) (q-p-4+1)); + (void) FormatLocaleString(key,MagickPathExtent,"%s",name); + (void) SetImageArtifact(image,key,token); + (void) FormatLocaleString(key,MagickPathExtent, + "%s-geometry",name); + (void) FormatLocaleString(geometry,MagickPathExtent, + "%.20gx%.20g%+.20g%+.20g",(double)pattern_bounds.width, + (double)pattern_bounds.height,(double)pattern_bounds.x, + (double)pattern_bounds.y); + (void) SetImageArtifact(image,key,geometry); } - (void) CopyMagickString(token,p,(size_t) (q-p-4+1)); - (void) FormatLocaleString(key,MagickPathExtent,"%s",name); - (void) SetImageArtifact(image,key,token); - (void) FormatLocaleString(key,MagickPathExtent,"%s-geometry", - name); - (void) FormatLocaleString(geometry,MagickPathExtent, - "%.20gx%.20g%+.20g%+.20g",(double)pattern_bounds.width, - (double)pattern_bounds.height,(double)pattern_bounds.x, - (double)pattern_bounds.y); - (void) SetImageArtifact(image,key,geometry); GetNextToken(q,&q,extent,token); break; } -- 2.40.0