[libpng15] Ignore unused chunks in the new simplified read API.
diff --git a/pngread.c b/pngread.c
index 76344ad..b90fdc1 100644
--- a/pngread.c
+++ b/pngread.c
@@ -1342,6 +1342,44 @@
image->opaque = control;
return 1;
+
+#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
+ /* Prepare the reader to ignore all recognized chunks whose
+ * data will not be used, i.e., all chunks recognized by libpng
+ * except for IHDR, PLTE, IDAT, IEND, tRNS, bKGD, gAMA, cHRM,
+ * and sRGB.
+ *
+ * This provides a small performance improvement and eliminates
+ * any potential vulnerability to security problems in the unused
+ * chunks)
+ */
+ {
+ static /* const */ png_byte chunks_to_ignore[] = {
+ 104, 73, 83, 84, '\0', /* hIST */
+ 105, 67, 67, 80, '\0', /* iCCP */
+ 105, 84, 88, 116, '\0', /* iTXt */
+ 111, 70, 70, 115, '\0', /* oFFs */
+ 112, 67, 65, 76, '\0', /* pCAL */
+ 112, 72, 89, 115, '\0', /* pHYs */
+ 115, 66, 73, 84, '\0', /* sBIT */
+ 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 */
+ };
+
+ /* Ignore unknown chunks */
+ png_set_keep_unknown_chunks(png_ptr,
+ 1 /* PNG_HANDLE_CHUNK_NEVER */,
+ NULL, 0);
+
+ /* Ignore known but unused chunks */
+ png_set_keep_unknown_chunks(png_ptr,
+ 1 /* PNG_HANDLE_CHUNK_NEVER */,
+ chunks_to_ignore, sizeof(chunks_to_ignore)/5);
+ }
+#endif /* PNG_HANDLE_AS_UNKNOWN_SUPPORTED */
}
/* Error clean up */
@@ -1425,7 +1463,8 @@
else if (info_ptr->valid & PNG_INFO_iCCP)
{
-# if 0 /* TODO: IMPLEMENT THIS! */
+# if 0 /* TODO: IMPLEMENT THIS! Remember to remove iCCP from
+ the list of unused chunks */
/* Here if we just have an iCCP chunk. */
if (!png_iCCP_is_sRGB(png_ptr, info_ptr))
# endif