From 72c305030ff214a91dd17dfabf67a6d734972d44 Mon Sep 17 00:00:00 2001 From: shwang6 <77797233+shwang6@users.noreply.github.com> Date: Thu, 8 Apr 2021 15:39:03 -0400 Subject: [PATCH] Update pngpread.c --- implib/DevIL/IL/libpng/pngpread.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/implib/DevIL/IL/libpng/pngpread.c b/implib/DevIL/IL/libpng/pngpread.c index 94856e90..03c41345 100644 --- a/implib/DevIL/IL/libpng/pngpread.c +++ b/implib/DevIL/IL/libpng/pngpread.c @@ -241,6 +241,20 @@ png_push_read_chunk(png_structrp png_ptr, png_inforp info_ptr) if (png_ptr->mode & PNG_AFTER_IDAT) png_benign_error(png_ptr, "Too many IDATs found"); + + else + { + png_alloc_size_t limit = PNG_SIZE_MAX; + # ifdef PNG_SET_USER_LIMITS_SUPPORTED + if (png_ptr->user_chunk_malloc_max > 0 && + png_ptr->user_chunk_malloc_max < limit) + limit = png_ptr->user_chunk_malloc_max; + # elif PNG_USER_CHUNK_MALLOC_MAX > 0 + if (PNG_USER_CHUNK_MALLOC_MAX < limit) + limit = PNG_USER_CHUNK_MALLOC_MAX; + # endif + if (png_ptr->push_length > limit) + png_chunk_error(png_ptr, "chunk data is too large"); } if (chunk_name == png_IHDR)