
Libpng 1.2.54rc01 - October 28, 2015

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.

Files available for download:

Source files with LF line endings (for Unix/Linux) and with a
"configure" script

   libpng-1.2.54rc01.tar.xz (LZMA-compressed, recommended)
   libpng-1.2.54rc01.tar.gz
   libpng-1.2.54rc01.tar.bz2

Source files with LF line endings (for Unix/Linux) without the
"configure" script

   libpng-1.2.54rc01-no-config.tar.xz (LZMA-compressed, recommended)
   libpng-1.2.54rc01-no-config.tar.gz
   libpng-1.2.54rc01-no-config.tar.bz2

Source files with CRLF line endings (for Windows), without the
"configure" script

   lp1254r01.zip
   lp1254r01.7z
   lp1254r01.tar.bz2

Project files

   libpng-1.2.54rc01-project-netware.zip
   libpng-1.2.54rc01-project-wince.zip

Other information:

   libpng-1.2.54rc01-README.txt
   libpng-1.2.54rc01-KNOWNBUGS.txt
   libpng-1.2.54rc01-LICENSE.txt
   libpng-1.2.54rc01-Y2K-compliance.txt
   libpng-1.2.54rc01-[previous version]-diff.txt
   libpng-1.2.54rc01-*.asc (armored detached GPG signatures)

Changes since the last public release (1.2.53):

version 1.2.54beta01 [October 23, 2015]
  Fix typecast in a png_debug2() statement in png_set_text_2() to
    avoid a compiler warning in PNG_DEBUG builds.
  Fixed printf formats in pngtest.c to avoid compiler warnings and a
    Coverity warning in PNG_DEBUG builds.
  Avoid Coverity issue 80858 (REVERSE NULL) in pngtest.c PNG_DEBUG builds.
  Removed WRITE_WEIGHTED_FILTERED code.
  Avoid potentially dereferencing NULL info_ptr in png_info_init_3().
  Fixed potential leak of png_pixels in contrib/pngminus/pnm2png.c
  Use nanosleep() instead of usleep() in contrib/gregbook/rpng2-x.c
    because usleep() is deprecated (port from libpng16).
  Fixed some bad links in the man page.
  Added a safety check in png_set_tIME() (Fixes CVE-2015-7981, bug report
    from Qixue Xiao).

version 1.2.54rc01 [October 28, 2015]
  No changes.

Send comments/corrections/commendations to png-mng-implement at lists.sf.net
(subscription required; visit
https://lists.sourceforge.net/lists/listinfo/png-mng-implement
to subscribe)
or to glennrp at users.sourceforge.net

Glenn R-P
#endif
