File GraphicsMagick-CVE-2019-7397.patch of Package GraphicsMagick.openSUSE_Leap_42.3_Update

Index: GraphicsMagick-1.3.25/coders/pdf.c
===================================================================
--- GraphicsMagick-1.3.25.orig/coders/pdf.c	2019-02-11 19:01:05.512451270 +0100
+++ GraphicsMagick-1.3.25/coders/pdf.c	2019-02-11 19:04:16.781368767 +0100
@@ -765,7 +765,10 @@ static unsigned int WritePDFImage(const
       MagickReallocMemory(ExtendedSignedIntegralType *,xref,
                           (count+2048)*sizeof(ExtendedSignedIntegralType));
       if (xref == (ExtendedSignedIntegralType *) NULL)
+      {
+        MagickFreeMemory(xref);
         ThrowWriterException(ResourceLimitError,MemoryAllocationFailed,image);
+      }
     }
   (void) WriteBlobString(image,"]\n");
   FormatString(buffer,"/Count %lu\n",(count-pages_id)/ObjectsPerImage);
@@ -824,6 +827,7 @@ static unsigned int WritePDFImage(const
 	      and report a warning to user.
 	    */
 	    compression=RLECompression;
+            MagickFreeMemory(xref);
 	    ThrowException(&image->exception,MissingDelegateError,JPEGLibraryIsNotAvailable,image->filename);
 	    break;
 	  }
@@ -836,6 +840,7 @@ static unsigned int WritePDFImage(const
 	      and report a warning to user.
 	    */
 	    compression=RLECompression;
+            MagickFreeMemory(xref);
 	    ThrowException(&image->exception,MissingDelegateError,ZipLibraryIsNotAvailable,image->filename);
 	    break;
 	  }
@@ -1180,7 +1185,10 @@ static unsigned int WritePDFImage(const
                 */
 		jpeg_blob=ImageToJPEGBlob(image,image_info,&length,&image->exception);
                 if (jpeg_blob == (unsigned char *) NULL)
+                {
+                  MagickFreeMemory(xref);
                   ThrowWriterException2(CoderError,image->exception.reason,image);
+                }
                 (void) WriteBlob(image,length,jpeg_blob);
                 MagickFreeMemory(jpeg_blob);
                 break;
@@ -1239,6 +1247,7 @@ static unsigned int WritePDFImage(const
                 if (!status)
                   {
                     CloseBlob(image);
+                    MagickFreeMemory(xref);
                     return(False);
                   }
                 break;
@@ -1293,7 +1302,10 @@ static unsigned int WritePDFImage(const
                 */
 		jpeg_blob=ImageToJPEGBlob(image,image_info,&length,&image->exception);
                 if (jpeg_blob == (unsigned char *) NULL)
+                {
+                  MagickFreeMemory(xref);
                   ThrowWriterException2(CoderError,image->exception.reason,image);
+                }
                 (void) WriteBlob(image,length,jpeg_blob);
                 MagickFreeMemory(jpeg_blob);
                 break;
@@ -1364,6 +1376,7 @@ static unsigned int WritePDFImage(const
                 if (!status)
                   {
                     CloseBlob(image);
+                    MagickFreeMemory(xref);
                     return(False);
                   }
                 break;
@@ -1470,6 +1483,7 @@ static unsigned int WritePDFImage(const
                   if (!status)
                     {
                       CloseBlob(image);
+                      MagickFreeMemory(xref);
                       return(False);
                     }
                   break;
openSUSE Build Service is sponsored by