[libpng15] Reject invalid compression flag, method when reading the iTXt chunk.

This commit is contained in:
Glenn Randers-Pehrson 2011-11-22 11:53:49 -06:00
parent 8500b7720b
commit 12fb29f951
4 changed files with 12 additions and 10 deletions

View File

@ -105,7 +105,7 @@ Version 1.5.7beta05 [November 22, 2011]
(Frank Busse). (Frank Busse).
Allow row_stride==0 to indicate default stride in simplified API. Allow row_stride==0 to indicate default stride in simplified API.
Added MINGW support to CMakeLists.txt Added MINGW support to CMakeLists.txt
Reject invalid compression flag when reading the iTXt chunk. Reject invalid compression flag or method when reading the iTXt chunk.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net: Send comments/corrections/commendations to png-mng-implement at lists.sf.net:
(subscription required; visit (subscription required; visit

View File

@ -3750,7 +3750,7 @@ Version 1.5.7beta05 [November 22, 2011]
(Frank Busse). (Frank Busse).
Allow row_stride==0 to indicate default stride in simplified API. Allow row_stride==0 to indicate default stride in simplified API.
Added MINGW support to CMakeLists.txt Added MINGW support to CMakeLists.txt
Reject invalid compression flag when reading the iTXt chunk. Reject invalid compression flag or method when reading the iTXt chunk.
Send comments/corrections/commendations to png-mng-implement at lists.sf.net Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit (subscription required; visit

14
png.h
View File

@ -1,7 +1,7 @@
/* png.h - header file for PNG reference library /* png.h - header file for PNG reference library
* *
* libpng version 1.5.7beta05 - November 21, 2011 * libpng version 1.5.7beta05 - November 22, 2011
* Copyright (c) 1998-2011 Glenn Randers-Pehrson * Copyright (c) 1998-2011 Glenn Randers-Pehrson
* (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger) * (Version 0.96 Copyright (c) 1996, 1997 Andreas Dilger)
* (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.) * (Version 0.88 Copyright (c) 1995, 1996 Guy Eric Schalnat, Group 42, Inc.)
@ -11,7 +11,7 @@
* Authors and maintainers: * Authors and maintainers:
* libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat * libpng versions 0.71, May 1995, through 0.88, January 1996: Guy Schalnat
* libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger * libpng versions 0.89c, June 1996, through 0.96, May 1997: Andreas Dilger
* libpng versions 0.97, January 1998, through 1.5.7beta05 - November 21, 2011: Glenn * libpng versions 0.97, January 1998, through 1.5.7beta05 - November 22, 2011: Glenn
* See also "Contributing Authors", below. * See also "Contributing Authors", below.
* *
* Note about libpng version numbers: * Note about libpng version numbers:
@ -195,7 +195,7 @@
* *
* This code is released under the libpng license. * This code is released under the libpng license.
* *
* libpng versions 1.2.6, August 15, 2004, through 1.5.7beta05, November 21, 2011, are * libpng versions 1.2.6, August 15, 2004, through 1.5.7beta05, November 22, 2011, are
* Copyright (c) 2004, 2006-2011 Glenn Randers-Pehrson, and are * Copyright (c) 2004, 2006-2011 Glenn Randers-Pehrson, and are
* distributed according to the same disclaimer and license as libpng-1.2.5 * distributed according to the same disclaimer and license as libpng-1.2.5
* with the following individual added to the list of Contributing Authors: * with the following individual added to the list of Contributing Authors:
@ -307,7 +307,7 @@
* Y2K compliance in libpng: * Y2K compliance in libpng:
* ========================= * =========================
* *
* November 21, 2011 * November 22, 2011
* *
* Since the PNG Development group is an ad-hoc body, we can't make * Since the PNG Development group is an ad-hoc body, we can't make
* an official declaration. * an official declaration.
@ -373,7 +373,7 @@
/* Version information for png.h - this should match the version in png.c */ /* Version information for png.h - this should match the version in png.c */
#define PNG_LIBPNG_VER_STRING "1.5.7beta05" #define PNG_LIBPNG_VER_STRING "1.5.7beta05"
#define PNG_HEADER_VERSION_STRING \ #define PNG_HEADER_VERSION_STRING \
" libpng version 1.5.7beta05 - November 21, 2011\n" " libpng version 1.5.7beta05 - November 22, 2011\n"
#define PNG_LIBPNG_VER_SONUM 15 #define PNG_LIBPNG_VER_SONUM 15
#define PNG_LIBPNG_VER_DLLNUM 15 #define PNG_LIBPNG_VER_DLLNUM 15
@ -620,7 +620,9 @@ typedef png_sPLT_t FAR * FAR * png_sPLT_tpp;
* default without iTXt support. Also note that when iTXt *is* supported, * default without iTXt support. Also note that when iTXt *is* supported,
* the "lang" and "lang_key" fields contain NULL pointers when the * the "lang" and "lang_key" fields contain NULL pointers when the
* "compression" field contains * PNG_TEXT_COMPRESSION_NONE or * "compression" field contains * PNG_TEXT_COMPRESSION_NONE or
* PNG_TEXT_COMPRESSION_zTXt. * PNG_TEXT_COMPRESSION_zTXt. Note that the "compression value" is not the
* same as what appears in the PNG tEXt/zTXt/iTXt chunk's "compression flag"
* which is always 0 or 1, or its "compression method" which is always 0.
*/ */
typedef struct png_text_struct typedef struct png_text_struct
{ {

View File

@ -2540,9 +2540,9 @@ png_handle_iTXt(png_structp png_ptr, png_infop info_ptr, png_uint_32 length)
comp_type = *lang++; comp_type = *lang++;
} }
if (comp_flag && comp_flag != PNG_TEXT_COMPRESSION_zTXt) if (comp_type || (comp_flag && comp_flag != PNG_TEXT_COMPRESSION_zTXt))
{ {
png_warning(png_ptr, "Unknown iTXt compression type"); png_warning(png_ptr, "Unknown iTXt compression type or method");
png_free(png_ptr, png_ptr->chunkdata); png_free(png_ptr, png_ptr->chunkdata);
png_ptr->chunkdata = NULL; png_ptr->chunkdata = NULL;
return; return;