94c571c2e0
http://www.imagemagick.org/www/Changelog.html ok pvalchev@
65 lines
2.4 KiB
Plaintext
65 lines
2.4 KiB
Plaintext
$OpenBSD: patch-coders_png_c,v 1.1 2004/08/13 06:17:41 brad Exp $
|
|
--- coders/png.c.orig Thu Aug 12 22:54:19 2004
|
|
+++ coders/png.c Thu Aug 12 23:04:05 2004
|
|
@@ -1372,6 +1372,8 @@ static void PNGErrorHandler(png_struct *
|
|
Image
|
|
*image;
|
|
|
|
+ if (LocaleCompare(message, "Missing PLTE before tRNS") == 0)
|
|
+ png_error(ping, message);
|
|
image=(Image *) png_get_error_ptr(ping);
|
|
if (image->debug != False)
|
|
(void) LogMagickEvent(CoderEvent,GetMagickModule(),
|
|
@@ -1600,6 +1602,20 @@ static Image *ReadOnePNGImage(MngInfo *m
|
|
length,
|
|
row_offset;
|
|
|
|
+#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
|
|
+ png_byte unused_chunks[]=
|
|
+ {
|
|
+ 104, 73, 83, 84, '\0', /* hIST */
|
|
+ 105, 84, 88, 116, '\0', /* iTXt */
|
|
+ 112, 67, 65, 76, '\0', /* pCAL */
|
|
+ 115, 67, 65, 76, '\0', /* sCAL */
|
|
+ 115, 80, 76, 84, '\0', /* sPLT */
|
|
+ 116, 69, 88, 116, '\0', /* tEXt */
|
|
+ 116, 73, 77, 69, '\0', /* tIME */
|
|
+ 122, 84, 88, 116, '\0', /* zTXt */
|
|
+ };
|
|
+#endif
|
|
+
|
|
logging=LogMagickEvent(CoderEvent,GetMagickModule(),
|
|
" enter ReadOnePNGImage()");
|
|
|
|
@@ -1685,6 +1701,12 @@ static Image *ReadOnePNGImage(MngInfo *m
|
|
else
|
|
png_set_read_fn(ping,image,png_get_data);
|
|
|
|
+#if defined(PNG_UNKNOWN_CHUNKS_SUPPORTED)
|
|
+ /* Ignore unused chunks */
|
|
+ png_set_keep_unknown_chunks(ping, 0, unused_chunks,
|
|
+ (int)sizeof(unused_chunks)/5);
|
|
+#endif
|
|
+
|
|
#if defined(PNG_USE_PNGGCCRD) && defined(PNG_ASSEMBLER_CODE_SUPPORTED) \
|
|
&& (PNG_LIBPNG_VER >= 10200)
|
|
/* Disable thread-unsafe features of pnggccrd */
|
|
@@ -2551,7 +2573,7 @@ static Image *ReadOnePNGImage(MngInfo *m
|
|
*value;
|
|
|
|
length=text[i].text_length;
|
|
- value=(char *) AcquireMagickMemory(length+1);
|
|
+ value=(char *) AcquireMagickMemory(length+MaxTextExtent);
|
|
if (value == (char *) NULL)
|
|
{
|
|
(void) ThrowMagickException(&image->exception,GetMagickModule(),
|
|
@@ -2623,6 +2645,8 @@ static Image *ReadOnePNGImage(MngInfo *m
|
|
image->filename);
|
|
png_get_IHDR(ping,ping_info,&width,&height,&bit_depth,&color_type,
|
|
&interlace_method,&compression_method,&filter_method);
|
|
+ if (width > 250000L || height > 250000L)
|
|
+ png_error(ping,"PNG Image dimensions are too large.");
|
|
mng_info->ob[object_id]->width=width;
|
|
mng_info->ob[object_id]->height=height;
|
|
mng_info->ob[object_id]->color_type=color_type;
|