From a056a15bf21f30c07478ae90cfb72acb2e37a67a Mon Sep 17 00:00:00 2001 From: Dirk Lemstra Date: Tue, 30 Apr 2024 12:37:40 +0200 Subject: [PATCH] Added check for the number of layers to the jp2 coder. --- coders/jp2.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/coders/jp2.c b/coders/jp2.c index 815e6819c8e..b77bda18262 100644 --- a/coders/jp2.c +++ b/coders/jp2.c @@ -283,6 +283,9 @@ static Image *ReadJP2Image(const ImageInfo *image_info,ExceptionInfo *exception) opj_codec_t *jp2_codec; + opj_codestream_info_v2_t + *jp2_codestream_info; + opj_dparameters_t parameters; @@ -363,6 +366,14 @@ static Image *ReadJP2Image(const ImageInfo *image_info,ExceptionInfo *exception) opj_destroy_codec(jp2_codec); ThrowReaderException(DelegateError,"UnableToDecodeImageFile"); } + jp2_codestream_info=opj_get_cstr_info(jp2_codec); + if (AcquireMagickResource(ListLengthResource,(MagickSizeType) + jp2_codestream_info->m_default_tile_info.numlayers) == MagickFalse) + { + opj_stream_destroy(jp2_stream); + opj_destroy_codec(jp2_codec); + ThrowReaderException(ResourceLimitError,"ListLengthExceedsLimit"); + } jp2_status=OPJ_TRUE; if ((AcquireMagickResource(WidthResource,(size_t) jp2_image->comps[0].w) == MagickFalse) || (AcquireMagickResource(WidthResource,(size_t) jp2_image->x1) == MagickFalse) ||