
Libpng 1.5.24 - November 12, 2015

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

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

   lpng1524.7z  (LZMA-compressed, recommended)
   lpng1524.zip

Other information:

   libpng-1.5.24-README.txt
   libpng-1.5.24-LICENSE.txt
   libpng-1.5.24-*.asc (armored detached GPG signatures)

Changes since the last public release (1.5.23):
  Avoid potentially dereferencing NULL info_ptr in png_info_init_3().
  Eliminated unused PNG_COST_SHIFT, PNG_WEIGHT_SHIFT, PNG_COST_FACTOR, and
    PNG_WEIGHT_FACTOR macros.
  Fixed potential leak of png_pixels in contrib/pngminus/pnm2png.c
  Fixed uninitialized variable in contrib/gregbook/rpng2-x.c
  Fixed some bad links in the man page.
  Safely convert num_bytes to a png_byte in png_set_sig_bytes() (Robert
    Seacord).
  Fixed the recently reported 1's complement security issue by replacing
    the value that is illegal in the PNG spec, in both signed and unsigned
    values, with 0. Illegal unsigned values (anything greater than or equal
    to  0x80000000) can still pass through, but since these are not illegal
    in ANSI-C (unlike 0x80000000 in the signed case) the checking that
    occurs later can catch them (John Bowler).
  Fixed png_save_int_32 when int is not 2's complement (John Bowler).
  Fixed byte order in png_do_read_filler() with 16-bit input (previously
    fixed in libpng-1.6.17 and 1.7.0beta46). Previously the high and
    low bytes of the filler, from png_set_filler() or from
    png_set_add_alpha(), were read in the wrong order.
  Merged pngvalid.c with version 1.6.19.
  Added sPLT support to pngtest.c
  Prevent writing over-length PLTE chunk (Cosmin Truta).
  Libpng incorrectly calculated the output rowbytes when the application
    decreased either the number of channels or the bit depth (or both) in
    a user transform.  This was safe; libpng overallocated buffer space
   (potentially by quite a lot; up to 4 times the amount required) but,
   from 1.5.4 on, resulted in a png_error (John Bowler).
  Silently truncate over-length PLTE chunk while reading.
  Fixed some inconsequential cut-and-paste typos in png_set_cHRM_XYZ_fixed().
  Clarified COPYRIGHT information to state explicitly that versions
    are derived from previous versions.
  Removed much of the long list of previous versions from png.h and
    libpng.3.

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
