GraphicsMagick: GetBlurKernel(): Use resource limited memory all...
GraphicsMagick Commits <[email protected]>
| Newsgroups | gmane.comp.video.graphicsmagick.cvs |
|---|---|
| Message-ID | <mailman.726.1685829187.9958.graphicsmagick-commit@lists.sourceforge.net> |
changeset 17b1fe6f6111 in /hg/GraphicsMagick details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=17b1fe6f6111 summary: GetBlurKernel(): Use resource limited memory allocator for blur kernel diffstat: ChangeLog | 7 +++++++ magick/effect.c | 10 +++++----- magick/utility.c | 28 +++++++++++++++++++++++----- www/Changelog.html | 5 +++++ 4 files changed, 40 insertions(+), 10 deletions(-) diffs (122 lines): diff -r 3cedf794348b -r 17b1fe6f6111 ChangeLog --- a/ChangeLog Sat Jun 03 15:29:02 2023 -0500 +++ b/ChangeLog Sat Jun 03 16:52:53 2023 -0500 @@ -1,5 +1,12 @@ 2023-06-03 Bob Friesenhahn <[email protected]> + * magick/effect.c (GetBlurKernel): Use resource limited memory + allocator for blur kernel. This plus MagickStrToD() updates + addresses #703 "allocation-size-too-big in gm (magick/effect.c:797 + in GetBlurKernel)". + + * magick/utility.c (MagickStrToD): Add infinity and nan checks. + * magick/command.c (MogrifyImage): Assure that -set has arguments. Addresses SourceForge issue #701 "Segmentation Violation in gm (magick/attribute.c:324 in SetImageAttribute)". diff -r 3cedf794348b -r 17b1fe6f6111 magick/effect.c --- a/magick/effect.c Sat Jun 03 15:29:02 2023 -0500 +++ b/magick/effect.c Sat Jun 03 16:52:53 2023 -0500 @@ -794,7 +794,7 @@ */ if (width == 0) width=3; - *kernel=MagickAllocateMemory(double *,width*sizeof(double)); + *kernel=MagickAllocateResourceLimitedArray(double *,width,sizeof(double)); if (*kernel == (double *) NULL) return(0); for (i=0; i < (long) width; i++) @@ -971,21 +971,21 @@ while ((long) (MaxRGB*kernel[0]) > 0) { if (last_kernel != (double *)NULL) - MagickFreeMemory(last_kernel); + MagickFreeResourceLimitedMemory(last_kernel); last_kernel=kernel; kernel=(double *) NULL; width=GetBlurKernel(width+2,sigma,&kernel); } if (last_kernel != (double *) NULL) { - MagickFreeMemory(kernel); + MagickFreeResourceLimitedMemory(kernel); width-=2; kernel=last_kernel; } } if (width < 3) { - MagickFreeMemory(kernel); + MagickFreeResourceLimitedMemory(kernel); ThrowImageException3(OptionError,UnableToBlurImage, KernelRadiusIsTooSmall); } @@ -1021,7 +1021,7 @@ status&=BlurImageScanlines(blur_image,kernel,width,BlurImageRowsText, exception); - MagickFreeMemory(kernel); + MagickFreeResourceLimitedMemory(kernel); if (blur_image != (Image *) NULL) blur_image->is_grayscale=original_image->is_grayscale; diff -r 3cedf794348b -r 17b1fe6f6111 magick/utility.c --- a/magick/utility.c Sat Jun 03 15:29:02 2023 -0500 +++ b/magick/utility.c Sat Jun 03 16:52:53 2023 -0500 @@ -1915,7 +1915,7 @@ char buff[MaxTextExtent], - *endptr; + *estr; int i, @@ -1927,10 +1927,28 @@ buff[i]=*p++; buff[i]=0; errno=0; - *value=strtod(buff,&endptr); - if ((errno == 0) && (buff != endptr)) - n++; - *end=(char *) start+(endptr-buff); + *value=strtod(buff,&estr); + if (buff == estr) + { + *value=0.0; + } +#if defined(INFINITY) + else if ((*value == +INFINITY) || (*value == -INFINITY)) + { + *value=0.0; + errno=ERANGE; + } +#endif + else if (isnan(*value)) + { + *value=0.0; + errno=ERANGE; + } + else if (errno == 0) + { + n++; + } + *end=(char *) start+(estr-buff); return (n); } diff -r 3cedf794348b -r 17b1fe6f6111 www/Changelog.html --- a/www/Changelog.html Sat Jun 03 15:29:02 2023 -0500 +++ b/www/Changelog.html Sat Jun 03 16:52:53 2023 -0500 @@ -40,6 +40,11 @@ <p>2023-06-03 Bob Friesenhahn <<a class="reference external" href="mailto:bfriesen%40simple.dallas.tx.us">bfriesen<span>@</span>simple<span>.</span>dallas<span>.</span>tx<span>.</span>us</a>></p> <blockquote> <ul class="simple"> +<li><p>magick/effect.c (GetBlurKernel): Use resource limited memory +allocator for blur kernel. This plus MagickStrToD() updates +addresses #703 "allocation-size-too-big in gm (magick/effect.c:797 +in GetBlurKernel)".</p></li> +<li><p>magick/utility.c (MagickStrToD): Add infinity and nan checks.</p></li> <li><p>magick/command.c (MogrifyImage): Assure that -set has arguments. Addresses SourceForge issue #701 "Segmentation Violation in gm (magick/attribute.c:324 in SetImageAttribute)".</p></li>