[libpng16] Check for invalid palette index while reading paletted PNG. When
one is found, issue a warning and increase png_ptr->num_palette accordingly.
Apps are responsible for checking to see if that happened.
diff --git a/ANNOUNCE b/ANNOUNCE
index 45801c7..1d3110b 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,5 +1,5 @@
-Libpng 1.6.0beta11 - February 13, 2012
+Libpng 1.6.0beta11 - February 17, 2012
This is not intended to be a public release. It will be replaced
within a few weeks by a public version or by another test version.
@@ -176,7 +176,7 @@
Updated the prebuilt configure files to current condition.
Revised INSTALL information about autogen.sh; it works in tar distributions.
-Version 1.6.0beta11 [February 13, 2012]
+Version 1.6.0beta11 [February 17, 2012]
Fix character count in pngstest command in projects/owatcom/pngstest.tgt
Revised test-pngstest.sh to report PASS/FAIL for each image.
Updated documentation about the simplified API.
@@ -207,6 +207,9 @@
produces warnings from gcc with some warning options (including -Wall). The
fix is to cause png.h to declare the functions with PNG_INTERNAL_FUNCTION
when png.h is included from pngpriv.h.
+ Check for invalid palette index while reading paletted PNG. When one is
+ found, issue a warning and increase png_ptr->num_palette accordingly.
+ Apps are responsible for checking to see if that happened.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit
diff --git a/CHANGES b/CHANGES
index 01a8c38..ee5b5ef 100644
--- a/CHANGES
+++ b/CHANGES
@@ -3927,7 +3927,7 @@
Updated the prebuilt configure files to current condition.
Revised INSTALL information about autogen.sh; it works in tar distributions.
-Version 1.6.0beta11 [February 13, 2012]
+Version 1.6.0beta11 [February 17, 2012]
Fix character count in pngstest command in projects/owatcom/pngstest.tgt
Revised test-pngstest.sh to report PASS/FAIL for each image.
Updated documentation about the simplified API.
@@ -3958,6 +3958,9 @@
produces warnings from gcc with some warning options (including -Wall). The
fix is to cause png.h to declare the functions with PNG_INTERNAL_FUNCTION
when png.h is included from pngpriv.h.
+ Check for invalid palette index while reading paletted PNG. When one is
+ found, issue a warning and increase png_ptr->num_palette accordingly.
+ Apps are responsible for checking to see if that happened.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit
diff --git a/pngread.c b/pngread.c
index 4560ca9..54138bb 100644
--- a/pngread.c
+++ b/pngread.c
@@ -523,6 +523,27 @@
png_error(png_ptr, "bad adaptive filter value");
}
+ if ((png_ptr->color_type == PNG_COLOR_TYPE_PALETTE) &&
+ (png_ptr->num_palette < (1 << png_ptr->bit_depth)))
+ {
+ if ((png_ptr->interlaced && png_ptr->pass == 6) ||
+ (!png_ptr->interlaced && png_ptr->pass == 0))
+ {
+ png_uint_32 i;
+ png_bytep rp = png_ptr->row_buf+1;
+
+ for (i = 0; i <= row_info.rowbytes; i++)
+ {
+ if (*rp >= png_ptr->num_palette)
+ {
+ png_warning(png_ptr,"Found invalid palette index");
+ png_ptr->num_palette=*rp;
+ }
+ rp++;
+ }
+ }
+ }
+
/* libpng 1.5.6: the following line was copying png_ptr->rowbytes before
* 1.5.6, while the buffer really is this big in current versions of libpng
* it may not be in the future, so this was changed just to copy the
@@ -585,6 +606,7 @@
if (png_ptr->read_row_fn != NULL)
(*(png_ptr->read_row_fn))(png_ptr, png_ptr->row_number, png_ptr->pass);
+
}
#endif /* PNG_SEQUENTIAL_READ_SUPPORTED */