diff options
Diffstat (limited to 'coders/dcm.c')
-rw-r--r-- | coders/dcm.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/coders/dcm.c b/coders/dcm.c index d2890d09a..f119a0998 100644 --- a/coders/dcm.c +++ b/coders/dcm.c @@ -3859,18 +3859,17 @@ static Image *ReadDCMImage(const ImageInfo *image_info,ExceptionInfo *exception) tag=((unsigned int) ReadBlobLSBShort(image) << 16) | ReadBlobLSBShort(image); length=(size_t) ReadBlobLSBLong(image); - if (length > (size_t) GetBlobSize(image)) + if (EOFBlob(image) != MagickFalse) { - read_info=DestroyImageInfo(read_info); - ThrowDCMException(CorruptImageError, - "InsufficientImageDataInFile"); + status=MagickFalse; + break; } if (tag == 0xFFFEE0DD) break; /* sequence delimiter tag */ if (tag != 0xFFFEE000) { - read_info=DestroyImageInfo(read_info); - ThrowDCMException(CorruptImageError,"ImproperImageHeader"); + status=MagickFalse; + break; } file=(FILE *) NULL; unique_file=AcquireUniqueFileResource(filename); |