From b44cd59ad9747069b90c6ff0f76558157a61e26a Mon Sep 17 00:00:00 2001 From: John Bowler Date: Fri, 12 Apr 2013 22:12:19 -0500 Subject: [PATCH] [libpng16] Corrected the test on user transform changes on read. It was in the png_set of the transform function, but that doesn't matter unless the transform function changes the rowbuf size, and that is only valid if transform_info is called. --- ANNOUNCE | 8 ++++++-- CHANGES | 6 +++++- pngrtran.c | 5 +---- pngtrans.c | 11 ++++++++++- 4 files changed, 22 insertions(+), 8 deletions(-) diff --git a/ANNOUNCE b/ANNOUNCE index f0972f2c6..b5fb13508 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,5 +1,5 @@ -Libpng 1.6.2beta01 - April 8, 2013 +Libpng 1.6.2beta01 - April 13, 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. @@ -25,11 +25,15 @@ Other information: Changes since the last public release (1.6.1): -Version 1.6.2beta01 [April 8, 2013] +Version 1.6.2beta01 [April 13, 2013] Updated documentation of 1.5.x to 1.6.x changes in iCCP chunk handling. Fixed incorrect warning of excess deflate data. End condition - the warning would be produced if the end of the deflate stream wasn't read in the last row. The warning is harmless. + Corrected the test on user transform changes on read. It was in the + png_set of the transform function, but that doesn't matter unless the + transform function changes the rowbuf size, and that is only valid if + transform_info is called. Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/CHANGES b/CHANGES index 0263e22b0..ff5bf7f83 100644 --- a/CHANGES +++ b/CHANGES @@ -4473,11 +4473,15 @@ Version 1.6.1rc01 [March 21, 2013] Version 1.6.1 [March 28, 2013] No changes. -Version 1.6.2beta01 [April 8, 2013] +Version 1.6.2beta01 [April 13, 2013] Updated documentation of 1.5.x to 1.6.x changes in iCCP chunk handling. Fixed incorrect warning of excess deflate data. End condition - the warning would be produced if the end of the deflate stream wasn't read in the last row. The warning is harmless. + Corrected the test on user transform changes on read. It was in the + png_set of the transform function, but that doesn't matter unless the + transform function changes the rowbuf size, and that is only valid if + transform_info is called. Send comments/corrections/commendations to png-mng-implement at lists.sf.net (subscription required; visit diff --git a/pngrtran.c b/pngrtran.c index 626f3b0ec..4485e40aa 100644 --- a/pngrtran.c +++ b/pngrtran.c @@ -1,7 +1,7 @@ /* pngrtran.c - transforms the data in a row for PNG readers * - * Last changed in libpng 1.6.1 [March 28, 2013] + * Last changed in libpng 1.6.2 [(PENDING RELEASE)] * Copyright (c) 1998-2013 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) @@ -1056,9 +1056,6 @@ png_set_read_user_transform_fn(png_structrp png_ptr, png_user_transform_ptr { png_debug(1, "in png_set_read_user_transform_fn"); - if (!png_rtran_ok(png_ptr, 0)) - return; - #ifdef PNG_READ_USER_TRANSFORM_SUPPORTED png_ptr->transformations |= PNG_USER_TRANSFORM; png_ptr->read_user_transform_fn = read_user_transform_fn; diff --git a/pngtrans.c b/pngtrans.c index b532172c4..ee82d4c3f 100644 --- a/pngtrans.c +++ b/pngtrans.c @@ -1,7 +1,7 @@ /* pngtrans.c - transforms the data in a row (used by both readers and writers) * - * Last changed in libpng 1.6.0 [February 14, 2013] + * Last changed in libpng 1.6.2 [(PENDING RELEASE)] * Copyright (c) 1998-2013 Glenn Randers-Pehrson * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) @@ -782,6 +782,15 @@ png_set_user_transform_info(png_structrp png_ptr, png_voidp if (png_ptr == NULL) return; + +#ifdef PNG_READ_USER_TRANSFORM_SUPPORTED + if ((png_ptr->mode & PNG_IS_READ_STRUCT) != 0 && + (png_ptr->flags & PNG_FLAG_ROW_INIT) != 0) + png_app_error(png_ptr, + "info change after png_start_read_image or png_read_update_info"); + return; +#endif + png_ptr->user_transform_ptr = user_transform_ptr; png_ptr->user_transform_depth = (png_byte)user_transform_depth; png_ptr->user_transform_channels = (png_byte)user_transform_channels;