[prev in list] [next in list] [prev in thread] [next in thread] 

List:       graphicsmagick-commit
Subject:    [GM-commit] GraphicsMagick: GIF: Try to be better about reporting failure wh...
From:       GraphicsMagick Commits <graphicsmagick-commit () lists ! sourceforge ! net>
Date:       2012-07-10 13:29:26
Message-ID: hg.cd958baa618c.1341926966.-1602079902 () blade ! simplesystems ! org
[Download RAW message or body]

changeset cd958baa618c in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=cd958baa618c
                
summary: GIF: Try to be better about reporting failure when ReadBlob() fails to \
return the requested number of bytes.

diffstat:

 ChangeLog                              |   6 ++++++
 VisualMagick/installer/inc/version.isx |   4 ++--
 coders/gif.c                           |  29 ++++++++++++++++++-----------
 magick/version.h                       |   4 ++--
 www/Changelog.html                     |   8 ++++++++
 5 files changed, 36 insertions(+), 15 deletions(-)

diffs (142 lines):

diff -r fce46e9e4476 -r cd958baa618c ChangeLog
--- a/ChangeLog	Thu Jul 05 16:44:32 2012 -0500
+++ b/ChangeLog	Tue Jul 10 08:29:21 2012 -0500
@@ -1,3 +1,9 @@
+2012-07-10  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
+
+	* coders/gif.c (ReadGIFImage): Try to be better about reporting
+	failure when ReadBlob() fails to return the requested number of
+	bytes.
+
 2012-06-26  Bob Friesenhahn  <bfriesen@simple.dallas.tx.us>
 
 	* www/benchmarks.rst: Strip the outdated benchmark results from
diff -r fce46e9e4476 -r cd958baa618c VisualMagick/installer/inc/version.isx
--- a/VisualMagick/installer/inc/version.isx	Thu Jul 05 16:44:32 2012 -0500
+++ b/VisualMagick/installer/inc/version.isx	Tue Jul 10 08:29:21 2012 -0500
@@ -10,5 +10,5 @@
 
 #define public MagickPackageName "GraphicsMagick"
 #define public MagickPackageVersion "1.4"
-#define public MagickPackageVersionAddendum ".020120626"
-#define public MagickPackageReleaseDate "snapshot-20120626"
+#define public MagickPackageVersionAddendum ".020120710"
+#define public MagickPackageReleaseDate "snapshot-20120710"
diff -r fce46e9e4476 -r cd958baa618c coders/gif.c
--- a/coders/gif.c	Thu Jul 05 16:44:32 2012 -0500
+++ b/coders/gif.c	Tue Jul 10 08:29:21 2012 -0500
@@ -1,5 +1,5 @@
 /*
-% Copyright (C) 2003-2010 GraphicsMagick Group
+% Copyright (C) 2003-2012 GraphicsMagick Group
 % Copyright (C) 2002 ImageMagick Studio
 % Copyright 1991-1999 E. I. du Pont de Nemours and Company
 %
@@ -737,7 +737,7 @@
 %
 %  Method ReadBlobBlock reads data from the image file and returns it.  The
 %  amount of data is determined by first reading a count byte.  The number
-%  or bytes read is returned.
+%  of bytes read is returned.
 %
 %  The format of the ReadBlobBlock method is:
 %
@@ -757,7 +757,7 @@
 static size_t ReadBlobBlock(Image *image,unsigned char *data)
 {
   size_t
-    count;
+    count=0;
 
   unsigned char
     block_count;
@@ -765,10 +765,12 @@
   assert(image != (Image *) NULL);
   assert(image->signature == MagickSignature);
   assert(data != (unsigned char *) NULL);
-  count=ReadBlob(image,1,&block_count);
-  if (count == 0)
-    return(0);
-  return(ReadBlob(image,(size_t) block_count,data));
+  if (ReadBlob(image,1,&block_count) == 1)
+    {
+      if ((count=ReadBlob(image,(size_t) block_count,data)) != (size_t) block_count)
+	count=0;
+    }
+  return count;
 }
 
 /*
@@ -857,7 +859,7 @@
     Determine if this is a GIF file.
   */
   count=ReadBlob(image,6,(char *) magick);
-  if ((count == 0) || ((LocaleNCompare((char *) magick,"GIF87",5) != 0) &&
+  if ((count != 6) || ((LocaleNCompare((char *) magick,"GIF87",5) != 0) &&
       (LocaleNCompare((char *) magick,"GIF89",5) != 0)))
     ThrowReaderException(CorruptImageError,ImproperImageHeader,image);
   global_colors=0;
@@ -881,7 +883,7 @@
   for ( ; ; )
   {
     count=ReadBlob(image,1,(char *) &c);
-    if (count == 0)
+    if (count != 1)
       break;
     if (c == ';')
       break;  /* terminator */
@@ -891,7 +893,7 @@
           GIF Extension block.
         */
         count=ReadBlob(image,1,(char *) &c);
-        if (count == 0) {
+        if (count != 1) {
 	  MagickFreeMemory(global_colormap);
           ThrowReaderException(CorruptImageError,UnableToReadExtensionBlock,	 
             image);
@@ -1043,7 +1045,12 @@
             ThrowReaderException(ResourceLimitError,MemoryAllocationFailed,
                                  image);
           }
-        (void) ReadBlob(image,3*image->colors,(char *) colormap);
+        if (ReadBlob(image,3*image->colors,(char *) colormap) != 3*image->colors)
+	  {
+	    MagickFreeMemory(global_colormap);
+	    MagickFreeMemory(colormap);
+	    ThrowReaderException(CorruptImageError,InsufficientImageDataInFile,image);
+	  }
         p=colormap;
         for (i=0; i < (long) image->colors; i++)
         {
diff -r fce46e9e4476 -r cd958baa618c magick/version.h
--- a/magick/version.h	Thu Jul 05 16:44:32 2012 -0500
+++ b/magick/version.h	Tue Jul 10 08:29:21 2012 -0500
@@ -38,8 +38,8 @@
 #define MagickLibVersion  0x120900
 #define MagickLibVersionText  "1.4"
 #define MagickLibVersionNumber 12,9,0
-#define MagickChangeDate   "20120626"
-#define MagickReleaseDate  "snapshot-20120626"
+#define MagickChangeDate   "20120710"
+#define MagickReleaseDate  "snapshot-20120710"
 	
 /*
   The MagickLibInterfaceNewest and MagickLibInterfaceOldest defines
diff -r fce46e9e4476 -r cd958baa618c www/Changelog.html
--- a/www/Changelog.html	Thu Jul 05 16:44:32 2012 -0500
+++ b/www/Changelog.html	Tue Jul 10 08:29:21 2012 -0500
@@ -36,6 +36,14 @@
 <div class="document">
 
 
+<p>2012-07-10  Bob Friesenhahn  &lt;<a class="reference external" \
href="mailto:bfriesen&#37;&#52;&#48;simple&#46;dallas&#46;tx&#46;us">bfriesen<span>&#6 \
4;</span>simple<span>&#46;</span>dallas<span>&#46;</span>tx<span>&#46;</span>us</a>&gt;</p>
 +<blockquote>
+<ul class="simple">
+<li>coders/gif.c (ReadGIFImage): Try to be better about reporting
+failure when ReadBlob() fails to return the requested number of
+bytes.</li>
+</ul>
+</blockquote>
 <p>2012-06-26  Bob Friesenhahn  &lt;<a class="reference external" \
href="mailto:bfriesen&#37;&#52;&#48;simple&#46;dallas&#46;tx&#46;us">bfriesen<span>&#6 \
4;</span>simple<span>&#46;</span>dallas<span>&#46;</span>tx<span>&#46;</span>us</a>&gt;</p>
  <blockquote>
 <ul class="simple">

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Graphicsmagick-commit mailing list
Graphicsmagick-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/graphicsmagick-commit


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic