From c727965c62ca86924a4bdbf5f32fe47182aa2666 Mon Sep 17 00:00:00 2001 From: Dirk Lemstra Date: Sat, 31 Mar 2018 15:24:38 +0200 Subject: [PATCH] Return null in GetImageDecoder when magick_info is null. --- MagickCore/constitute.c | 19 +++++++++++-------- MagickCore/magick.c | 3 ++- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/MagickCore/constitute.c b/MagickCore/constitute.c index bf38b18df..3477daa74 100644 --- a/MagickCore/constitute.c +++ b/MagickCore/constitute.c @@ -372,6 +372,9 @@ MagickExport Image *ReadImage(const ImageInfo *image_info, const MagickInfo *magick_info; + DecodeImageHandler + *decoder; + ExceptionInfo *sans_exception; @@ -477,8 +480,8 @@ MagickExport Image *ReadImage(const ImageInfo *image_info, image=DestroyImage(image); } image=NewImageList(); - if ((magick_info == (const MagickInfo *) NULL) || - (GetImageDecoder(magick_info) == (DecodeImageHandler *) NULL)) + decoder=GetImageDecoder(magick_info); + if (decoder == (DecodeImageHandler *) NULL) { delegate_info=GetDelegateInfo(read_info->magick,(char *) NULL,exception); if (delegate_info == (const DelegateInfo *) NULL) @@ -487,14 +490,14 @@ MagickExport Image *ReadImage(const ImageInfo *image_info, (void) CopyMagickString(read_info->filename,filename, MagickPathExtent); magick_info=GetMagickInfo(read_info->magick,exception); + decoder=GetImageDecoder(magick_info); } } - if ((magick_info != (const MagickInfo *) NULL) && - (GetImageDecoder(magick_info) != (DecodeImageHandler *) NULL)) + if (decoder != (DecodeImageHandler *) NULL) { if (GetMagickDecoderThreadSupport(magick_info) == MagickFalse) LockSemaphoreInfo(magick_info->semaphore); - image=GetImageDecoder(magick_info)(read_info,exception); + image=decoder(read_info,exception); if (GetMagickDecoderThreadSupport(magick_info) == MagickFalse) UnlockSemaphoreInfo(magick_info->semaphore); } @@ -537,8 +540,8 @@ MagickExport Image *ReadImage(const ImageInfo *image_info, if (status != MagickFalse) (void) SetImageInfo(read_info,0,exception); magick_info=GetMagickInfo(read_info->magick,exception); - if ((magick_info == (const MagickInfo *) NULL) || - (GetImageDecoder(magick_info) == (DecodeImageHandler *) NULL)) + decoder=GetImageDecoder(magick_info); + if (decoder == (DecodeImageHandler *) NULL) { if (IsPathAccessible(read_info->filename) != MagickFalse) (void) ThrowMagickException(exception,GetMagickModule(), @@ -552,7 +555,7 @@ MagickExport Image *ReadImage(const ImageInfo *image_info, } if (GetMagickDecoderThreadSupport(magick_info) == MagickFalse) LockSemaphoreInfo(magick_info->semaphore); - image=(Image *) (GetImageDecoder(magick_info))(read_info,exception); + image=(Image *) (decoder)(read_info,exception); if (GetMagickDecoderThreadSupport(magick_info) == MagickFalse) UnlockSemaphoreInfo(magick_info->semaphore); } diff --git a/MagickCore/magick.c b/MagickCore/magick.c index bd33ce389..a3eea1ea6 100644 --- a/MagickCore/magick.c +++ b/MagickCore/magick.c @@ -215,7 +215,8 @@ MagickExport MagickInfo *AcquireMagickInfo(const char *module,const char *name, */ MagickExport DecodeImageHandler *GetImageDecoder(const MagickInfo *magick_info) { - assert(magick_info != (MagickInfo *) NULL); + if (magick_info == (MagickInfo *) NULL) + return((DecodeImageHandler *) NULL); assert(magick_info->signature == MagickCoreSignature); return(magick_info->decoder); } -- 2.40.0