From 3690a8209202d2c50f5e4661d68fd49c3f1024e4 Mon Sep 17 00:00:00 2001 From: Dirk Lemstra Date: Tue, 2 May 2017 08:26:55 +0200 Subject: [PATCH] Fixed various leaks reported in #460. --- coders/pdb.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/coders/pdb.c b/coders/pdb.c index 799bc7efa..428f040d7 100644 --- a/coders/pdb.c +++ b/coders/pdb.c @@ -424,19 +424,25 @@ static Image *ReadPDBImage(const ImageInfo *image_info,ExceptionInfo *exception) case 0: { image->compression=NoCompression; - count=(ssize_t) ReadBlob(image, packets * image -> rows, pixels); + count=(ssize_t) ReadBlob(image,packets*image->rows,pixels); break; } case 1: { image->compression=RLECompression; - if (!DecodeImage(image, pixels, packets * image -> rows)) - ThrowReaderException( CorruptImageError, "RLEDecoderError" ); + if (!DecodeImage(image,pixels,packets*image->rows)) + { + pixels=(unsigned char *) RelinquishMagickMemory(pixels); + ThrowReaderException(CorruptImageError,"RLEDecoderError"); + } break; } default: + { + pixels=(unsigned char *) RelinquishMagickMemory(pixels); ThrowReaderException(CorruptImageError, - "UnrecognizedImageCompressionType" ); + "UnrecognizedImageCompressionType"); + } } p=pixels; switch (bits_per_pixel) @@ -541,7 +547,10 @@ static Image *ReadPDBImage(const ImageInfo *image_info,ExceptionInfo *exception) break; } default: + { + pixels=(unsigned char *) RelinquishMagickMemory(pixels); ThrowReaderException(CorruptImageError,"ImproperImageHeader"); + } } pixels=(unsigned char *) RelinquishMagickMemory(pixels); if (EOFBlob(image) != MagickFalse) -- 2.50.1