
Libpng 1.0.68 - August 24, 2017

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.68.tar.xz (LZMA-compressed, recommended)
   libpng-1.0.68.tar.gz

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

   libpng-1.0.68-no-config.tar.xz (LZMA-compressed, recommended)
   libpng-1.0.68-no-config.tar.gz

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

   lpng1068.zip
   lpng1068.7z

Project files

   libpng-1.0.68-project-netware.zip
   libpng-1.0.68-project-wince.zip

Other information:

   libpng-1.0.68-README.txt
   libpng-1.0.68-KNOWNBUGS.txt
   libpng-1.0.68-LICENSE.txt
   libpng-1.0.68-Y2K-compliance.txt
   libpng-1.0.68-*.asc (armored detached GPG signatures)

Changes since the last public release (1.0.67):

version 1.2.58 [August 24, 2017]
  Added png_check_chunk_length() function, and check all chunks except
    IDAT against the default 8MB limit; check IDAT against the maximum
    size computed from IHDR parameters.
  Check for 0 return from png_get_rowbytes() and added some (size_t) typecasts
    in contrib/pngminus/*.c to stop some Coverity issues (162705, 162706,
    and 162707).

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
