
Libpng 1.0.31 - February 18, 2008

This is a public release of libpng, intended for use in production codes.

Files available for download:

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

   libpng-1.0.31.tar.gz
   libpng-1.0.31.tar.lzma
     (Get the lzma codec from <http://tukaani.org/lzma>).
   libpng-1.0.31.tar.bz2

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

   libpng-1.0.31-no-config.tar.gz
   libpng-1.0.31-no-config.tar.lzma
   libpng-1.0.31-no-config.tar.bz2

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

   lpng1031.zip
   lpng1031.7z
   lpng1031.tar.bz2

Project files

   libpng-1.0.31-project-netware.zip
   libpng-1.0.31-project-wince.zip

Other information:

   libpng-1.0.31-README.txt
   libpng-1.0.31-KNOWNBUGS.txt
   libpng-1.0.31-LICENSE.txt
   libpng-1.0.31-Y2K-compliance.txt

Changes since the last public release (1.0.30):

version 1.0.31 [February 18, 2008]

  Fixed bug with unknown chunk handling, introduced in version 1.2.17
  Prevent gamma from being applied twice.
  Fixed some continue-after-malloc-failure errors in pngset.c (David Hill)
  Check for info_ptr == NULL in png_read_info() and png_process_data().
  Check for possible use of NULL user_png_ver[] in png_create_read_struct().
  Fix overflow of "msg" in png_decompres_chunk().
  Added libpng-1.2.25.tar.lzma to distribution.  Get the lzma codec
    from <http://tukaani.org/lzma>.
  Added lpng1225.7z to distribution.  Get the 7-zip decoder from
    from <http://www.7-zip.org>.
  Fixed some broken links in the README file.
  Refactored png_read_push_finish_row() slightly, trying to satisfy Coverity.
  Fixed potential NULL dereference of png_ptr in png_destroy_write_struct();
  clarified potential NULL dereference of png_ptr in png_destroy_read_struct();
  fixed potential NULL dereference of info_ptr in png_handle_bKGD();
  fixed potential NULL dereference of user_png_ver[] in
    png_create_write_struct_2(). (Coverity)

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
