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  &lt;<a class="reference external" href="mailto:bfriesen&#37;&#52;&#48;simple&#46;dallas&#46;tx&#46;us">bfriesen<span>&#64;</span>simple<span>&#46;</span>dallas<span>&#46;</span>tx<span>&#46;</span>us</a>&gt;</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 &quot;allocation-size-too-big in gm (magick/effect.c:797
+in GetBlurKernel)&quot;.</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 &quot;Segmentation Violation in gm
 (magick/attribute.c:324 in SetImageAttribute)&quot;.</p></li>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.