GraphicsMagick: MAT: Check return value from SeekBlob()

GraphicsMagick Commits <[email protected]>
Newsgroups gmane.comp.video.graphicsmagick.cvs
Message-ID <mailman.28316.1640188289.1995.graphicsmagick-commit@lists.sourceforge.net>
changeset fd361514b612 in /hg/GraphicsMagick
details: http://hg.GraphicsMagick.org/hg/GraphicsMagick?cmd=changeset;node=fd361514b612
summary: MAT: Check return value from SeekBlob()

diffstat:

 coders/mat.c |  11 +++++++----
 1 files changed, 7 insertions(+), 4 deletions(-)

diffs (42 lines):

diff -r ee10270827f0 -r fd361514b612 coders/mat.c
--- a/coders/mat.c	Wed Dec 22 08:35:05 2021 -0600
+++ b/coders/mat.c	Wed Dec 22 09:51:16 2021 -0600
@@ -491,7 +491,8 @@
 size_t (*ReadBlobXXXDoubles)(Image *image, size_t len, double *data);
 size_t (*ReadBlobXXXFloats)(Image *image, size_t len, float *data);
 
-  (void)SeekBlob(image,0,SEEK_SET);
+ if (SeekBlob(image,0,SEEK_SET) != (magick_off_t) 0)
+   RET_CHECK(image);
   while(!EOFBlob(image)) /* object parser loop */
   {
     ldblk = ReadBlobLSBLong(image);
@@ -532,7 +533,8 @@
 
     HDR.nameLen = ReadBlobXXXLong(image);
     if(HDR.nameLen>0xFFFF) RET_CHECK(image);
-    (void)SeekBlob(image,HDR.nameLen,SEEK_CUR); /* Skip a matrix name. */
+    if (SeekBlob(image,HDR.nameLen,SEEK_CUR) < 0) /* Skip a matrix name. */
+      RET_CHECK(image);
 
     switch(HDR.Type[1])
     {
@@ -598,7 +600,8 @@
       if(HDR.imagf==1) ldblk=MagickArraySize(2,ldblk); /*ldblk *= 2;*/
       offset=MagickArraySize(HDR.nCols,ldblk);
       if(offset==0) RET_CHECK(image);
-      SeekBlob(image, offset, SEEK_CUR);;
+      if (SeekBlob(image, offset, SEEK_CUR) < 0)
+        RET_CHECK(image);
       goto skip_reading_current;
     }
 
@@ -995,7 +998,7 @@
       case 0:
         size = ReadBlobXXXLong(image2); /* Object name string size */
         size = 4 * (((size_t) size + 3 + 1) / 4);
-        (void) SeekBlob(image2, size, SEEK_CUR);
+        if (SeekBlob(image2, size, SEEK_CUR) < 0) goto MATLAB_KO;
         break;
       case 1:
       case 2:
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.