Log message:
Security update to 1.4.3:
Several versions of libpng through 1.4.2 (and through 1.2.43 in
the older series) contain a bug whereby progressive applications
such as web browsers (or the rpng2 demo app included in libpng)
could receive an extra row of image data beyond the height reported
in the header, potentially leading to an out-of-bounds write to
memory (depending on how the application is written) and the
possibility of execution of an attacker's code with the privileges
of the libpng user (including remote compromise in the case of a
libpng-based browser visiting a hostile web site). This vulnerability
has been assigned ID CVE-2010-1205 (via Mozilla).
An additional memory-leak bug, involving images with malformed sCAL
chunks, is also present; it could lead to an application crash
(denial of service) when viewing such images.
Both bugs are fixed in versions 1.4.3 and 1.2.44.
version 1.4.3beta01 [June 18, 2010]
Added missing quotation marks in the aix block of configure.ac
The new "vstudio" project was missing from the zip and 7z distributions.
In pngpread.c: png_push_have_row() add check for new_row > height
version 1.4.3beta02 [June 18, 2010]
Removed the now-redundant check for out-of-bounds new_row from example.c
version 1.4.3beta03 [June 18, 2010]
In pngpread.c: png_push_finish_row() add check for too many rows.
version 1.4.3beta04 [June 19, 2010]
In pngpread.c: png_push_process_row() add check for too many rows.
Removed the checks added in beta01 and beta03, as they are now redundant.
version 1.4.3beta05 [June 20, 2010]
Rewrote png_process_IDAT_data to consistently treat extra data as warnings
and handle end conditions more cleanly.
Removed the new (beta04) check in png_push_process_row().
version 1.4.3rc01 [June 21, 2010]
Revised some comments in png_process_IDAT_data().
version 1.4.3rc02 [June 22, 2010]
Changed char *msg to PNG_CONST char *msg in pngrutil.c
Stop memory leak when reading a malformed sCAL chunk.
Removed some trailing blanks.
version 1.4.3rc03 [June 23, 2010]
Revised pngpread.c patch of beta05 to avoid an endless loop.
version 1.4.3 [June 26, 2010]
Updated some of the "last changed" dates.
|
Log message:
Update to 1.4.2. Shared library name changes from libpn12.* to libpng14.*,
so bump ABI depends.
Remove libpng.* from package, instead use buildlink to help some packages
that are looking for the library themselves instead of using pkg-config
or libpng-config.
Changes:
version 1.4.2:
Restored the macro definition of png_check_sig().
Conditionally compile an "else" statement in png_decompress_chunk().
Documented the fact that png_set_dither() was disabled since libpng-1.4.0.
Reenabled png_set_dither() but renamed it to png_set_quantize() to reflect
more accurately what it actually does. At the same time, renamed
the PNG_DITHER_[RED,GREEN_BLUE]_BITS macros to
PNG_QUANTIZE_[RED,GREEN,BLUE]_BITS.
Added some "(long)" typecasts to printf calls in png_handle_cHRM().
Relaxed the overly-restrictive permissions of some files.
Added the "vstudio" project to replace "visualc6" and \
"visualc71" which
will be removed from libpng-1.5.0.
Demonstrate in example.c that lang_key should be initialized.
Set PNG_NO_READ_BGR, PNG_NO_IO_STATE, and PNG_NO_TIME_RFC1123 in
contrib/pngminim/decoder/pngusr.h to make a smaller decoder application.
Include png_reset_zstream() in png.c only when PNG_READ_SUPPORTED is defined.
Removed dummy_inflate.c and uncompr.c from contrib/pngminim/encoder
Corrected PNG_UNKNOWN_CHUNKS_SUPPORTED to PNG_HANDLE_AS_UNKNOWN_SUPPORTED
in gregbook/readpng2.c
Corrected protection of png_get_user_transform_ptr. The API declaration in
png.h is removed if both READ and WRITE USER_TRANSFORM are turned off
but was left defined in pngtrans.c
Moved declarations of umsg[] inside the proper #ifdef blocks in pngrutil.c
version 1.4.1 [February 25, 2010]
Updated CMakeLists.txt for consistent indentation and to avoid an
unclosed if-statement warning (Philip Lowman).
Revised Makefile.am and Makefile.in to remove references to Y2KINFO,
KNOWNBUG, and libpng.la (Robert Schwebel).
Revised the makefiles to install the same files and symbolic
except for libpng.la and libpng14.la.
Make png_set|get_compression_buffer_size() available even when
PNG_WRITE_SUPPORTED is not enabled.
Revised Makefile.am and Makefile.in to simplify their maintenance.
Revised the makefiles to install a link to libpng14.so.14.1
Removed png_set_premultiply_alpha() from scripts/*.def
Revised png_decompress_chunk() to improve speed and memory usage when
decoding large chunks, using a two-pass method suggested by John Bowler.
Added png_set|get_chunk_malloc_max() functions.
Relocated "int k" declaration in pngtest.c to minimize its scope.
Folded some long lines in the source files.
Added defineable PNG_USER_CHUNK_CACHE_MAX and PNG_USER_CHUNK_MALLOC_MAX
Eliminated use of png_ptr->irowbytes and reused the slot in png_ptr as
png_ptr->png_user_chunk_malloc_max.
Return allocated "old_buffer" in png_push_save_buffer() before calling
png_error(), to avoid a potential memory leak.
Removed the cbuilder5 project, which has not been updated to 1.4.0.
Complete rewrite of two-pass png_decompress_chunk() by John Bowler.
Removed obsolete unused MMX-querying support from contrib/gregbook
Removed the AIX redefinition of jmpbuf in png.h
Define _ALL_SOURCE in configure.ac, makefile.aix, and CMakeLists.txt
when using AIX compiler.
Removed unused gzio.c from contrib/pngminim gather and makefile scripts
Changes to Libpng from version 1.2.42 to 1.4.0 (January 4, 2010)
Libpng-1.4.0 was released by the PNG Development Group on January
3, 2010. Important new features include support for the iTXt chunk
and a function for limiting the amount of memory that a possibly
malicious compressed chunk can consume. Some long-deprecated functions
and features have been removed. A new private header file that is
not visible to applications has been created, to improve our ability
to maintain binary compatibility among future libpng versions.
Specifically,
1. Private libpng prototypes and macro definitions were moved from
png.h and pngconf.h into a new pngpriv.h header file that is not
visible to applications.
2. Some obsolete/deprecated macros and functions have been removed.
a. We eliminated the obsolete, unused pnggccrd.c and pngvcrd.c files
and related makefiles.
b. We removed the typecasted NULL definitions such as
#define png_voidp_NULL (png_voidp)NULL
If you used these in your application, just use NULL instead.
c. We eliminated the PNG_1_0_X and PNG_1_2_X macros.
d. We eliminated the PNG_LEGACY_SUPPORTED macro.
e. We removed many WIN32_WCE #ifdefs.
f. We removed the functions png_read_init(info_ptr),
png_write_init(info_ptr), png_info_init(info_ptr),
png_read_destroy(), and png_write_destroy().
They have been deprecated since libpng-0.95.
g. We removed the png_permit_empty_plte() function. It has been
deprecated since libpng-1.0.9. Use png_permit_mng_features() instead.
h. We removed the obsolete stub functions png_get_mmx_flagmask(),
png_set_mmx_thresholds(), png_get_asm_flags(),
png_get_mmx_bitdepth_threshold(), png_get_mmx_rowbytes_threshold(),
png_set_asm_flags(), and png_mmx_supported()
i. We removed the obsolete png_check_sig(), png_memcpy_check(), and
png_memset_check() functions. Instead use !png_sig_cmp(),
png_memcpy(), and png_memset(), respectively, i.e.,
replace
png_check_sig(buf, 8)
with
png_sig_cmp(buf, 0, 8) == 0
replace
png_memcpy_check(png_ptr, dest, src, length)
with
png_memcpy(dest, src, length)
and replace
png_memset_check(png_ptr, dest, value, length)
with
png_memset(dest, value, length)
j. We removed support for global arrays to improve thread safety.
k. We removed support for numbered error messages by default, since we
never got around to actually numbering the error messages. The function
png_set_strip_error_numbers() was removed from the library by default.
l. The png_zalloc() and png_zfree() functions are no longer exported.
The png_zalloc() function no longer zeroes out the memory that it
allocates.
m. The function png_set_gray_1_2_4_to_8() was removed. It has been
deprecated since libpng-1.0.18 and 1.2.9, when it was replaced with
png_set_expand_gray_1_2_4_to_8() because the former function also
expanded palette images.
3. Several function prototypes were changed.
a. We changed the prototype for png_malloc() from
png_malloc(png_structp png_ptr, png_uint_32 size) to
png_malloc(png_structp png_ptr, png_alloc_size_t size)
b. We changed the prototypes of png_get_compression_buffer_size() and
png_set_compression_buffer_size() to work with png_size_t instead of
png_uint_32.
4. We added some new features:
a. We enabled iTXt chunk support by default. This changes the png_text
structure by adding the itxt_length, lang, and lang_key members.
b. We added the functions png_set_benign_errors(), png_benign_error(),
and png_chunk_benign_error(). With these, you can choose to treat
certain normally fatal errors as nonfatal.
c. Support for setting the maximum amount of memory that the application
will allocate for reading chunks was added, as a security measure.
The functions png_set_chunk_cache_max() and png_get_chunk_cache_max()
were added to the library.
d. We added the png_calloc() function and used it in place of
of "png_malloc(); png_memset();" except in the case in png_read_png()
where the array consists of pointers; in this case a "for" loop \
is used
after the png_malloc() to set the pointers to NULL, to give robust.
behavior in case the application runs out of memory part-way through
the process.
e. We implemented support for I/O states by adding png_ptr member io_state
and functions png_get_io_chunk_name() and png_get_io_state() in pngget.c
f. We added PNG_TRANSFORM_GRAY_TO_RGB to the available high-level
input transforms.
5. Other changes
a. We changed the names of the png_struct and info_struct members \
"trans"
and "trans_values" to "trans_alpha" and \
"trans_color", respectively.
b. Checking for and reporting of errors in the IHDR chunk is more thorough.
c. We removed the trailing '.' from the warning and error messages.
d. Direct access to png_ptr->jmpbuf has been deprecated since libpng
version 1.0.6, and libpng now generates a warning about it.
To avoid such warnings, change
setjmp(png_ptr->jmpbuf)
to
setjmp(png_jmpbuf(png_ptr))
|
Log message:
Update to 1.2.43:
version 1.2.42beta01 [December 4, 2009]
Removed "#define PNG_NO_ERROR_NUMBERS" that was inadvertently added
to pngconf.h in version 1.2.41.
Revised scripts/makefile.netbsd, makefile.openbsd, and makefile.sco
to put png.h and pngconf.h in $prefix/include, like the other scripts,
instead of in $prefix/include/libpng. Also revised makefile.sco
to put them in $prefix/include/libpng12 instead of in
$prefix/include/libpng/libpng12.
Removed leftover "-DPNG_CONFIGURE_LIBPNG" from scripts/makefile.darwin
version 1.2.42beta02 [December 11, 2009]
Removed leftover "-DPNG_CONFIGURE_LIBPNG" from \
contrib/pngminim/*/makefile
Relocated png_do_chop() to its original position in pngrtran.c. The
change in version 1.2.41beta08 caused transparency to be handled wrong
in some 16-bit datastreams (Yusaku Sugai).
version 1.2.42rc01 [December 17, 2009]
No changes.
version 1.2.42rc02 [December 22, 2009]
Renamed libpng-pc.in back to libpng.pc.in and revised CMakeLists.txt
(revising changes made in 1.2.41beta17 and 1.2.41rc01)
version 1.2.42rc03 [December 25, 2009]
Swapped PNG_UNKNOWN_CHUNKS_SUPPORTED and PNG_HANDLE_AS_UNKNOWN_SUPPORTED
in pngset.c to be consistent with other changes in version 1.2.38.
version 1.2.42rc04 [January 1, 2010]
Marked png_memcpy_check() and png_memset_check() PNG_DEPRECATED.
Updated copyright year.
version 1.2.42rc05 [January 2, 2010]
Avoid deprecated references to png_ptr-io_ptr and png_ptr->error_ptr
in pngtest.c
version 1.2.42 and 1.0.52 [January 3, 2010]
No changes.
version 1.2.43beta01 [January 27, 2010]
Updated CMakeLists.txt for consistent indentation and to avoid an
unclosed if-statement warning (Philip Lowman).
Removed "#ifdef PNG_1_0_X / #endif" surrounding
PNG_READ_16_TO_8_SUPPORTED and PNG_READ_GRAY_TO_RGB_SUPPORTED
in pngconf.h. These were added in libpng-1.2.41beta08 and libpng-1.0.51,
which introduced a binary incompatibility with libpng-1.0.50.
Backported new png_decompress_chunk() algorithm from libpng-1.4.1.
version 1.2.43beta02 [February 1, 2010]
Backported two-pass png_decompress_chunk() algorithm from libpng-1.4.1.
version 1.2.43beta03 [February 6, 2010]
Backported fast png_push_save_buffer() algorithm from libpng-1.4.1.
Backported some cosmetic changes from libpng-1.4.1.
version 1.2.43beta04 [February 8, 2010]
Reverted recent changes to png_push_save-buffer().
Removed PNGAPI declaration of png_calloc() and png_write_sig() in
1ibpng-1.2.X, introduced by mistake in libpng-1.2.41.
Return allocated "old_buffer" in png_push_save_buffer() before \
png_error()
to avoid a potential memory leak.
version 1.2.43beta05 [February 8, 2010]
Ported rewritten png_decompress_chunk() by John Bowler from libpng-1.4.1.
version 1.0.53rc01 and 1.2.43rc01 [February 18, 2010]
No changes.
version 1.0.53rc02 and 1.2.43rc02 [February 19, 2010]
Define _ALL_SOURCE in configure.ac, makefile.aix, and CMakeLists.txt
when using AIX compiler.
version 1.0.53 and 1.2.43 [February 25, 2010]
Removed unused gzio.c from contrib/pngminim gather and makefile scripts
|
Log message:
Update to 1.2.41:
version 1.2.41beta01 [September 25, 2009]
Moved redundant IHDR checking into new png_check_IHDR() in png.c
and report all errors found in the IHDR data.
Eliminated useless call to png_check_cHRM() from pngset.c
Expanded TAB characters in pngrtran.c
version 1.2.41beta02 [September 30, 2009]
Revised png_check_IHDR().
version 1.2.41beta03 [October 1, 2009]
Revised png_check_IHDR() again, to check info_ptr members instead of
the contents of the returned parameters.
version 1.2.41beta04 [October 7, 2009]
Added "xcode" project similar one already in libpng-1.4.0beta (Alam \
Arias).
Ported some cosmetic changes from libpng-1.4.0beta86.
Eliminated a shadowed declaration of "pp" in png_handle_sPLT().
version 1.2.41beta05 [October 17, 2009]
Revised pngconf.h to make it easier to enable iTXt support. From libpng
version 1.2.9 through 1.2.40, defining PNG_iTXt_SUPPORTED did not work
as expected.
Ported some cosmetic changes from libpng-1.4.0beta87, changing
many "#if defined(x)" to "#ifdef x".
version 1.2.41beta06 [October 18, 2009]
Restored PNG_USE_LOCAL_ARRAYS code in pngread.c that was inadvertently
deleted in libpng-1.2.41beta05.
Converted all PNG_NO_* tests to PNG_*_SUPPORTED everywhere except pngconf.h
as in libpng-1.4.0beta78 and later.
version 1.2.41beta07 [October 21, 2009]
Ported some cosmetic changes from libpng-1.4.0rc01, changing
many "#if defined(x)" to "#ifdef x" in png.h and pngconf.h.
version 1.2.41beta08 [October 30, 2009]
Ported from libpng-1.4.0rc01: png_calloc(), png_get_io_chunk_name(),
png_get_io_state(), png_set_user_cache_max(), png_get_user_cache_max(),
png_set_premultiply_alpha, and png_do_read_premultiply_alpha().
Relocated png_do_chop() ahead of building gamma tables in pngrtran.c
This avoids building 16-bit gamma tables unnecessarily.
version 1.2.41beta09 [November 1, 2009]
Removed a harmless extra png_set_invert_alpha() from pngwrite.c
More bugfixes and improvements to CMakeLists.txt (Philip Lowman)
Moved CMakeLists.txt from scripts into the main libpng directory.
Apply png_user_chunk_cache_max within png_decompress_chunk().
Merged libpng-1.2.41.txt with libpng-1.4.0.txt where appropriate.
version 1.2.41beta10 [November 1, 2009]
Enabled iTXt support by default. To ensure binary compatibility with
previous versions, the "lang" and "lang_key" members \
will be assumed
to be omitted from previous versions unless the current libpng
version was built with PNG_iTXt_SUPPORTED (which is otherwise no
longer necessary to gain iTXt support), as a signal that the user has
been building previous versions with PNG_iTXt_SUPPORTED as well.
version 1.2.41beta11 [November 2, 2009]
Store user's user_png_ver in new png_ptr->user_png_ver element.
Revised iTXt support. To ensure binary compatibility with
previous versions, the "lang" and "lang_key" members \
will be assumed
to be omitted from versions prior to 1.2.41beta11 whenever there is a
library mismatch.
version 1.2.41beta12 [November 2, 2009]
Free png_ptr->user_png_ver when destroying png_ptr.
version 1.2.41beta13 [November 3, 2009]
Updated scripts/pngw32.def and projects/wince/png32ce.def
Copied projects/wince/png32ce.def to the scripts directory.
Added scripts/makefile.wce
Patched ltmain.sh for wince support.
Added PNG_CONVERT_tIME_SUPPORTED macro.
version 1.2.41beta14 [November 8, 2009]
versions 1.2.41beta05 through 1.2.41beta13 were abandoned.
The 1.0.x/1.2.x series will only receive security updates from now on.
Make inclusion of time.h in pngconf.h depend on PNG_CONVERT_tIME_SUPPORTED
Make #define PNG_CONVERT_tIME_SUPPORTED depend on PNG_WRITE_tIME_SUPPORTED
Reverted iTXt compatibility stuff from 1.2.41beta05, 1.2.41beta11, and
1.2.41beta12.
Reverted IOSTATE feature, user_cache_max, and premultiply_alpha features
from 1.2.41beta08.
Retained png_calloc() from 1.2.41beta08 but as a non-exported function,
and removed reference to png_calloc from scripts/*.def
version 1.2.41beta15 [November 8, 2009]
Added PNG_DEPSTRUCT, PNG_DEPRECATED, PNG_USE_RESULT, PNG_NORETURN, and
PNG_ALLOCATED macros to detect deprecated direct access to the
png_struct or info_struct members and other deprecated usage in
applications (John Bowler).
Updated scripts/makefile* to add "-DPNG_CONFIGURE_LIBPNG" to CFLAGS,
to prevent warnings about direct access to png structs by libpng
functions while building libpng. They need to be tested, especially
those using compilers other than gcc.
Updated projects/visualc6 and visualc71 with "/d PNG_CONFIGURE_LIBPNG".
version 1.2.41beta16 [November 9, 2009]
Removed three direct references to read_info_ptr members in pngtest.c
that were detected by the new PNG_DEPSTRUCT macro.
Only #define PNG_DEPSTRUCT, etc. in pngconf.h if not already defined.
version 1.2.41beta17 [November 10, 2009]
Updated CMakeLists.txt to add "-DPNG_CONFIGURE_LIBPNG" to the \
definitions.
Marked deprecated function prototypes with PNG_DEPRECATED.
Marked memory allocation function prototypes with PNG_ALLOCATED.
Changed png_check_sig() to !png_sig_cmp() in contrib programs.
Corrected the png_get_IHDR() call in contrib/gregbook/readpng2.c
Added "-DPNG_CONFIGURE_LIBPNG" to the contrib/pngminum makefiles.
version 1.2.41beta18 [November 11, 2009]
Renamed scripts/makefile.wce to scripts/makefile.cegcc
Marked nonexported functions with PNG_PRIVATE macro.
version 1.2.41rc01 and 1.0.51rc01 [November 18, 2009]
Revised scripts/*.def to reflect functions actually exported by libpng.
Updated the copyright year in scripts/pngw32.rc from 2004 to 2009.
Moved descriptions of makefiles and other scripts out of INSTALL into
scripts/README.txt
version 1.2.41rc02 [November 22, 2009]
Rebuilt the configure scripts with autoconf-2.65
version 1.2.41rc03 [November 25, 2009]
Disabled the new pedantic warnings about deprecated function use
and deprecated structure access unless the user defines
PNG_PEDANTIC_WARNINGS.
Added "#define PNG_NO_PEDANTIC_WARNINGS" in the libpng source files.
Removed "-DPNG_CONFIGURE_LIBPNG" from the makefiles and projects.
version 1.2.41 [December 3, 2009]
Updated the list of files and made some cosmetic changes in README.
|