From: Cristy Date: Thu, 4 Jan 2018 11:49:08 +0000 (-0500) Subject: https://github.com/ImageMagick/ImageMagick/issues/931 X-Git-Tag: 7.0.7-20~4 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=caedfada2addf611eebb8c88477a47c6c2f641ca;p=imagemagick https://github.com/ImageMagick/ImageMagick/issues/931 --- diff --git a/coders/dcm.c b/coders/dcm.c index 94e8e6a8b..ca13d85fd 100644 --- a/coders/dcm.c +++ b/coders/dcm.c @@ -2979,6 +2979,14 @@ static Image *ReadDCMImage(const ImageInfo *image_info,ExceptionInfo *exception) { \ if (data != (unsigned char *) NULL) \ data=(unsigned char *) RelinquishMagickMemory(data); \ + if (graymap != (int *) NULL) \ + graymap=(int *) RelinquishMagickMemory(graymap); \ + if (bluemap != (int *) NULL) \ + bluemap=(int *) RelinquishMagickMemory(bluemap); \ + if (greenmap != (int *) NULL) \ + greenmap=(int *) RelinquishMagickMemory(greenmap); \ + if (redmap != (int *) NULL) \ + redmap=(int *) RelinquishMagickMemory(redmap); \ if (stream_info != (DCMStreamInfo *) NULL) \ stream_info=(DCMStreamInfo *) RelinquishMagickMemory(stream_info); \ ThrowReaderException((exception),(message)); \ @@ -3064,6 +3072,10 @@ static Image *ReadDCMImage(const ImageInfo *image_info,ExceptionInfo *exception) Read DCM preamble. */ data=(unsigned char *) NULL; + graymap=(int *) NULL; + redmap=(int *) NULL; + greenmap=(int *) NULL; + bluemap=(int *) NULL; stream_info=(DCMStreamInfo *) AcquireMagickMemory(sizeof(*stream_info)); if (stream_info == (DCMStreamInfo *) NULL) ThrowDCMException(ResourceLimitError,"MemoryAllocationFailed"); diff --git a/coders/rla.c b/coders/rla.c index 548fec314..b2cce34be 100644 --- a/coders/rla.c +++ b/coders/rla.c @@ -287,7 +287,10 @@ static Image *ReadRLAImage(const ImageInfo *image_info,ExceptionInfo *exception) { offset=SeekBlob(image,scanlines[image->rows-y-1],SEEK_SET); if (offset < 0) - ThrowReaderException(CorruptImageError,"ImproperImageHeader"); + { + scanlines=(MagickOffsetType *) RelinquishMagickMemory(scanlines); + ThrowReaderException(CorruptImageError,"ImproperImageHeader"); + } for (channel=0; channel < (int) rla_info.number_channels; channel++) { length=ReadBlobMSBSignedShort(image); @@ -387,10 +390,10 @@ static Image *ReadRLAImage(const ImageInfo *image_info,ExceptionInfo *exception) if (status == MagickFalse) break; } + scanlines=(MagickOffsetType *) RelinquishMagickMemory(scanlines); if (EOFBlob(image) != MagickFalse) ThrowFileException(exception,CorruptImageError,"UnexpectedEndOfFile", image->filename); - scanlines=(MagickOffsetType *) RelinquishMagickMemory(scanlines); (void) CloseBlob(image); return(GetFirstImageInList(image)); }