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;