File GraphicsMagick-CVE-2017-14138.patch of Package GraphicsMagick.7574
Index: GraphicsMagick-1.3.25/coders/webp.c
===================================================================
--- GraphicsMagick-1.3.25.orig/coders/webp.c 2015-10-04 21:35:31.000000000 +0200
+++ GraphicsMagick-1.3.25/coders/webp.c 2017-11-07 11:28:57.432146827 +0100
@@ -186,15 +186,19 @@ static Image *ReadWEBPImage(const ImageI
break;
#endif
case VP8_STATUS_OUT_OF_MEMORY:
+ MagickFreeMemory(stream);
ThrowReaderException(ResourceLimitError,MemoryAllocationFailed,image);
break;
case VP8_STATUS_INVALID_PARAM:
+ MagickFreeMemory(stream);
ThrowReaderException(CoderError,WebPInvalidParameter,image);
break;
case VP8_STATUS_BITSTREAM_ERROR:
+ MagickFreeMemory(stream);
ThrowReaderException(CorruptImageError,CorruptImage,image);
break;
case VP8_STATUS_UNSUPPORTED_FEATURE:
+ MagickFreeMemory(stream);
ThrowReaderException(CoderError,DataEncodingSchemeIsNotSupported,image);
break;
case VP8_STATUS_SUSPENDED:
@@ -210,15 +214,18 @@ static Image *ReadWEBPImage(const ImageI
This is what is returned if the user terminates the
decoding.
*/
+ MagickFreeMemory(stream);
ThrowReaderException(CoderError,WebPDecodingFailedUserAbort,image);
break;
case VP8_STATUS_NOT_ENOUGH_DATA:
+ MagickFreeMemory(stream);
ThrowReaderException(CorruptImageError,InsufficientImageDataInFile,image);
break;
}
/*
Catch-all if not handled above.
*/
+ MagickFreeMemory(stream);
ThrowReaderException(CorruptImageError,CorruptImage,image);
}
image->depth=8;