
Libpng 1.0.55 - July 7, 2011

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.55.tar.xz (LZMA-compressed, recommended)
   libpng-1.0.55.tar.gz
   libpng-1.0.55.tar.bz2

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

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

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

   lpng1055.zip
   lpng1055.7z
   lpng1055.tar.bz2

Project files

   libpng-1.0.55-project-netware.zip
   libpng-1.0.55-project-wince.zip

Other information:

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

Changes since the last public release (1.0.53):

version 1.0.55 [July 7, 2011]

  Fixed uninitialized memory read in png_format_buffer() (Bug
    report by Frank Busse, related to CVE-2004-0421).
  Pass "" instead of '\0' to png_default_error() in png_err().  This mistake
    was introduced in libpng-1.2.20beta01.
  Check for up->location !PNG_AFTER_IDAT when writing unknown chunks
    before IDAT.
  Ported bugfix in pngrtran.c from 1.5.3: when expanding a paletted image,
    always expand to RGBA if transparency is present.
  Check for integer overflow in png_set_rgb_to_gray().
  Check for sCAL chunk too short.

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
