[libpng17] Corrected previous attempt at overflow detection in
png_set_unknown_chunks().
diff --git a/ANNOUNCE b/ANNOUNCE
index c9c3bcf..ca787ba 100644
--- a/ANNOUNCE
+++ b/ANNOUNCE
@@ -1,5 +1,5 @@
-Libpng 1.7.0alpha08 - January 10, 2013
+Libpng 1.7.0alpha08 - January 17, 2013
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.
@@ -110,7 +110,8 @@
Fixed conceivable but difficult to repro overflow. Also added two test
programs to generate and test a PNG which should have the problem.
-Version 1.7.0alpha08 [January 10, 2013]
+Version 1.7.0alpha08 [January 17, 2013]
+ Corrected previous attempt at overflow detection in png_set_unknown_chunks().
===========================================================================
NOTICE November 17, 2012:
diff --git a/CHANGES b/CHANGES
index 320d9ce..6b4f476 100644
--- a/CHANGES
+++ b/CHANGES
@@ -4396,7 +4396,8 @@
Fixed conceivable but difficult to repro overflow. Also added two test
programs to generate and test a PNG which should have the problem.
-Version 1.7.0alpha08 [January 10, 2013]
+Version 1.7.0alpha08 [January 17, 2013]
+ Corrected previous attempt at overflow detection in png_set_unknown_chunks().
===========================================================================
NOTICE November 17, 2012:
diff --git a/pngset.c b/pngset.c
index 70d4aa5..ea57bfa 100644
--- a/pngset.c
+++ b/pngset.c
@@ -1169,7 +1169,7 @@
* limit.
*/
if (num_unknowns > PNG_UINT_32_MAX - info_ptr->unknown_chunks_num ||
- num_unknowns > PNG_SIZE_MAX/(sizeof *np) - info_ptr->unknown_chunks_num)
+ num_unknowns + info_ptr->unknown_chunks_num > PNG_SIZE_MAX/(sizeof *np))
{
/* This is a benign read error (user limits are disabled and we are about
* to overflow 2^32 chunks) and an application write error.
@@ -1180,7 +1180,7 @@
}
np = png_voidcast(png_unknown_chunkp, png_malloc(png_ptr,
- (info_ptr->unknown_chunks_num + (unsigned int)num_unknowns) *
+ (info_ptr->unknown_chunks_num + num_unknowns) *
(sizeof (png_unknown_chunk))));
memcpy(np, info_ptr->unknown_chunks,