ANNOUNCE 34.4 KB
Newer Older
1

2
Libpng 1.6.0beta41 - January 20, 2013
3 4 5

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.
6

7 8 9 10 11
Files available for download:

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

12 13
   1.6.0beta41.tar.xz (LZMA-compressed, recommended)
   1.6.0beta41.tar.gz
14

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

18 19
   lp160b41.7z  (LZMA-compressed, recommended)
   lp160b41.zip
20 21 22

Other information:

23 24
   1.6.0beta41-README.txt
   1.6.0beta41-LICENSE.txt
25

26
Changes since the last public release (1.5.7):
27

28
Version 1.6.0beta01 [December 15, 2011]
29 30
  Removed machine-generated configure files from the GIT repository (they will
    continue to appear in the tarball distributions).
31 32
  Restored the new 'simplified' API, which was started in libpng-1.5.7beta02
    but later deleted from libpng-1.5.7beta05.
33
  Added example programs for the new 'simplified' API.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
  Added ANSI-C (C90) headers and require them, and take advantage of the
    change. Also fixed some of the projects/* and contrib/* files that needed
    updates for libpng16 and the move of pngvalid.c.
    With this change the required ANSI-C header files are assumed to exist: the
    implementation must provide float.h, limits.h, stdarg.h and stddef.h and
    libpng relies on limits.h and stddef.h existing and behaving as defined
    (the other two required headers aren't used).  Non-ANSI systems that don't
    have stddef.h or limits.h will have to provide an appropriate fake
    containing the relevant types and #defines.
  The use of FAR/far has been eliminated and the definition of png_alloc_size_t
    is now controlled by a flag so that 'small size_t' systems can select it
    if necessary.  Libpng 1.6 may not currently work on such systems -- it
    seems likely that it will ask 'malloc' for more than 65535 bytes with any
    image that has a sufficiently large row size (rather than simply failing
    to read such images).
49
  New tools directory containing tools used to generate libpng code.
50
  Fixed race conditions in parallel make builds. With higher degrees of
51 52 53 54 55
    parallelism during 'make' the use of the same temporary file names such
    as 'dfn*' can result in a race where a temporary file from one arm of the
    build is deleted or overwritten in another arm.  This changes the
    temporary files for suffix rules to always use $* and ensures that the
    non-suffix rules use unique file names.
56

57
Version 1.6.0beta02 [December 21, 2011]
58 59 60
  Correct configure builds where build and source directories are separate.
    The include path of 'config.h' was erroneously made relative in pngvalid.c
    in libpng 1.5.7.
61

62
Version 1.6.0beta03 [December 22, 2011]
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
  Start-up code size improvements, error handler flexibility. These changes
    alter how the tricky allocation of the initial png_struct and png_info
    structures are handled. png_info is now handled in pretty much the same
    way as everything else, except that the allocations handle NULL return
    silently.  png_struct is changed in a similar way on allocation and on
    deallocation a 'safety' error handler is put in place (which should never
    be required).  The error handler itself is changed to permit mismatches
    in the application and libpng error buffer size; however, this means a
    silent change to the API to return the jmp_buf if the size doesn't match
    the size from the libpng compilation; libpng now allocates the memory and
    this may fail.  Overall these changes result in slight code size
    reductions; however, this is a reduction in code that is always executed
    so is particularly valuable.  Overall on a 64-bit system the libpng DLL
    decreases in code size by 1733 bytes.  pngerror.o increases in size by
    about 465 bytes because of the new functionality.
78 79
  Added png_convert_to_rfc1123_buffer() and deprecated png_convert_to_rfc1123()
    to avoid including a spurious buffer in the png_struct.
80

81
Version 1.6.0beta04 [December 30, 2011]
82
  Regenerated configure scripts with automake-1.11.2
83 84 85 86 87 88
  Eliminated png_info_destroy(). It is now used only in png.c and only calls
    one other internal function and memset().
  Enabled png_get_sCAL_fixed() if floating point APIs are enabled. Previously
    it was disabled whenever internal fixed point arithmetic was selected,
    which meant it didn't exist even on systems where FP was available but not
    preferred.
89
  Added pngvalid.c compile time checks for const APIs.
90 91 92 93 94
  Implemented 'restrict' for png_info and png_struct. Because of the way
    libpng works both png_info and png_struct are always accessed via a
    single pointer.  This means adding C99 'restrict' to the pointer gives
    the compiler some opportunity to optimize the code.  This change allows
    that.
95 96
  Moved AC_MSG_CHECKING([if libraries can be versioned]) later to the proper
    location in configure.ac (Gilles Espinasse).
97 98
  Changed png_memcpy to C assignment where appropriate. Changed all those
    uses of png_memcpy that were doing a simple assignment to assignments
99 100 101 102 103 104 105 106
    (all those cases where the thing being copied is a non-array C L-value).
  Added some error checking to png_set_*() routines.
  Removed the reference to the non-exported function png_memcpy() from
    example.c.
  Fixed the Visual C 64-bit build - it requires jmp_buf to be aligned, but
    it had become misaligned.
  Revised contrib/pngminus/pnm2png.c to avoid warnings when png_uint_32
    and unsigned long are of different sizes.
107

108
Version 1.6.0beta05 [January 15, 2012]
109
  Updated manual with description of the simplified API (copied from png.h)
110
  Fix bug in pngerror.c: some long warnings were being improperly truncated
111
    (CVE-2011-3464, bug introduced in libpng-1.5.3beta05).
112

113 114
Version 1.6.0beta06 [January 24, 2012]
  Added palette support to the simplified APIs. This commit
115 116
    changes some of the macro definitions in png.h, app code
    may need corresponding changes.
117
  Increased the formatted warning buffer to 192 bytes.
118 119
  Added color-map support to simplified API. This is an initial version for
    review; the documentation has not yet been updated.
120
  Fixed Min/GW uninstall to remove libpng.dll.a
121

122
Version 1.6.0beta07 [January 28, 2012]
123 124 125 126
  Eliminated Intel icc/icl compiler warnings. The Intel (GCC derived)
    compiler issues slightly different warnings from those issued by the
    current vesions of GCC. This eliminates those warnings by
    adding/removing casts and small code rewrites.
127 128 129 130 131 132 133 134 135
  Updated configure.ac from autoupdate: added --enable-werror option.
    Also some layout regularization and removal of introduced tab characters
    (replaced with 3-character indentation).  Obsolete macros identified by
    autoupdate have been removed; the replacements are all in 2.59 so
    the pre-req hasn't been changed.  --enable-werror checks for support
    for -Werror (or the given argument) in the compiler.  This mimics the
    gcc configure option by allowing -Werror to be turned on safely; without
    the option the tests written in configure itself fail compilation because
    they cause compiler warnings.
136
  Rewrote autogen.sh to run autoreconf instead of running tools one-by-one.
137 138
  Conditionalize the install rules for MINGW and CYGWIN in CMakeLists.txt and
    set CMAKE_LIBRARY_OUTPUT_DIRECTORY to "lib" on all platforms (C. Yapp).
139 140
  Freeze libtool files in the 'scripts' directory. This version of autogen.sh
    attempts to dissuade people from running it when it is not, or should not,
141 142 143
    be necessary.  In fact, autogen.sh does not work when run in a libpng
    directory extracted from atar distribution anymore. You must run it in
    a GIT clone instead.
144 145 146
  Added two images to contrib/pngsuite (1-bit and 2-bit transparent grayscale),
    and renamed three whose names were inconsistent with those in
    pngsuite/README.txt.
147

148
Version 1.6.0beta08 [February 1, 2012]
149
  Fixed Image::colormap misalignment in pngstest.c
150
  Check libtool/libtoolize version number (2.4.2) in configure.ac
151 152 153 154 155
  Divide test-pngstest.sh into separate pngstest runs for basic and
    transparent images.
  Moved automake options to AM_INIT_AUTOMAKE in configure.ac
  Added color-tests, silent-rules (Not yet implemented in Makefile.am) and
    version checking to configure.ac
156 157 158 159
  Improved pngstest speed by not doing redundant tests and add const to
    the background parameter of png_image_finish_read. The --background
    option is now done automagically only when required, so that commandline
    option no longer exists.
160 161 162
  Cleaned up pngpriv.h to consistently declare all functions and data.
    Also eliminated PNG_CONST_DATA, which is apparently not needed but we
    can't be sure until it is gone.
163 164
  Added symbol prefixing that allows all the libpng external symbols
    to be prefixed (suggested by Reuben Hawkins).
165 166 167
  Updated "ftbb*.png" list in the owatcom and vstudio projects.
  Fixed 'prefix' builds on clean systems. The generation of pngprefix.h
    should not require itself.
168 169
  Updated INSTALL to explain that autogen.sh must be run in a GIT clone,
    not in a libpng directory extracted from a tar distribution.
170

171
Version 1.6.0beta09 [February 1, 2012]
172 173
  Reverted the prebuilt configure files to libpng-1.6.0beta05 condition.

174
Version 1.6.0beta10 [February 3, 2012]
175
  Added Z_SOLO for zlib-1.2.6+ and correct pngstest tests
176
  Updated list of test images in CMakeLists.txt
177
  Updated the prebuilt configure files to current condition.
178
  Revised INSTALL information about autogen.sh; it works in tar distributions.
179

180
Version 1.6.0beta11 [February 16, 2012]
181
  Fix character count in pngstest command in projects/owatcom/pngstest.tgt
182
  Revised test-pngstest.sh to report PASS/FAIL for each image.
183
  Updated documentation about the simplified API.
184 185 186 187 188 189 190 191
  Corrected estimate of error in libpng png_set_rgb_to_gray API.  The API is
    extremely inaccurate for sRGB conversions because it uses an 8-bit
    intermediate linear value and it does not use the sRGB transform, so it
    suffers from the known instability in gamma transforms for values close
    to 0 (see Poynton).  The net result is that the calculation has a maximum
    error of 14.99/255; 0.5/255^(1/2.2).  pngstest now uses 15 for the
    permitted 8-bit error. This may still not be enough because of arithmetic
    error.
192 193 194 195 196 197 198 199
  Removed some unused arrays (with #ifdef) from png_read_push_finish_row().
  Fixed a memory overwrite bug in simplified read of RGB PNG with
    non-linear gamma Also bugs in the error checking in pngread.c and changed
    quite a lot of the checks in pngstest.c to be correct; either correctly
    written or not over-optimistic.  The pngstest changes are insufficient to
    allow all possible RGB transforms to be passed; pngstest cmppixel needs
    to be rewritten to make it clearer which errors it allows and then changed
    to permit known inaccuracies.
200 201 202 203 204 205 206 207 208 209 210
  Removed tests for no-longer-used *_EMPTY_PLTE_SUPPORTED from pngstruct.h
  Fixed fixed/float API export conditionals. 1) If FIXED_POINT or
    FLOATING_POINT options were switched off, png.h ended up with lone ';'
    characters.  This is not valid ANSI-C outside a function.  The ';'
    characters have been moved inside the definition of PNG_FP_EXPORT and
    PNG_FIXED_EXPORT. 2) If either option was switched off, the declaration
    of the corresponding functions were completely omitted, even though some
    of them are still used internally.  The result is still valid, but
    produces warnings from gcc with some warning options (including -Wall). The
    fix is to cause png.h to declare the functions with PNG_INTERNAL_FUNCTION
    when png.h is included from pngpriv.h.
211 212 213
  Check for invalid palette index while reading paletted PNG.  When one is
    found, issue a warning and increase png_ptr->num_palette accordingly.
    Apps are responsible for checking to see if that happened.
214

215
Version 1.6.0beta12 [February 18, 2012]
216 217 218 219 220 221 222
  Do not increase num_palette on invalid_index.
  Relocated check for invalid palette index to pngrtran.c, after unpacking
    the sub-8-bit pixels.
  Fixed CVE-2011-3026 buffer overrun bug.  Deal more correctly with the test
    on iCCP chunk length. Also removed spurious casts that may hide problems
    on 16-bit systems.

223
Version 1.6.0beta13 [February 24, 2012]
224 225 226 227
  Eliminated redundant png_push_read_tEXt|zTXt|iTXt|unknown code from
    pngpread.c and use the sequential png_handle_tEXt, etc., in pngrutil.c;
    now that png_ptr->buffer is inaccessible to applications, the special
    handling is no longer useful.
228 229 230 231 232 233
  Added PNG_SAFE_LIMITS feature to pnglibconf.dfa, pngpriv.h, and new
    pngusr.dfa to reset the user limits to safe ones if PNG_SAFE_LIMITS is
    defined.  To enable, use "CPPFLAGS=-DPNG_SAFE_LIMITS_SUPPORTED=1" on the
    configure command or put #define PNG_SAFE_LIMITS_SUPPORTED in
    pnglibconf.h.prebuilt and pnglibconf.h.

234
Version 1.6.0beta14 [February 27, 2012]
235 236
  Added information about the new limits in the manual.
  Updated Makefile.in
237

238
Version 1.6.0beta15 [March 2, 2012]
239 240
  Removed unused "current_text" members of png_struct and the png_free()
    of png_ptr->current_text from pngread.c
241
  Rewrote pngstest.c for substantial speed improvement.
242 243
  Fixed transparent pixel and 16-bit rgb tests in pngstest and removed a
    spurious check in pngwrite.c
244 245 246 247 248
  Added PNG_IMAGE_FLAG_FAST for the benefit of applications that store
    intermediate files, or intermediate in-memory data, while processing
    image data with the simplified API.  The option makes the files larger
    but faster to write and read.  pngstest now uses this by default; this
    can be disabled with the --slow option.
249 250 251 252 253
  Improved pngstest fine tuning of error numbers, new test file generator.
    The generator generates images that test the full range of sample values,
    allow the error numbers in pngstest to be tuned and checked.  makepng
    also allows generation of images with extra chunks, although this is
    still work-in-progress.
254 255
  Added tests for invalid palette index while reading and writing (work in
    progress, the latter isn't finished).
256 257 258 259
  Fixed some bugs in ICC profile writing. The code should now accept
    all potentially valid ICC profiles and reject obviously invalid ones.
    It now uses png_error() to do so rather than casually writing a PNG
    without the necessary color data.
260
  Removed whitespace from the end of lines in all source files and scripts.
261

262
Version 1.6.0beta16 [March 6, 2012]
263 264
  Relocated palette-index checking function from pngrutil.c to pngtrans.c
  Added palette-index checking while writing.
265 266 267 268
  Changed png_inflate() and calling routines to avoid overflow problems.
    This is an intermediate check-in that solves the immediate problems and
    introduces one performance improvement (avoiding a copy via png_ptr->zbuf.)
    Further changes will be made to make ICC profile handling more secure.
269 270 271 272 273 274 275
  Fixed build warnings (MSVC, GCC, GCC v3). Cygwin GCC with default options
    declares 'index' as a global, causing a warning if it is used as a local
    variable.  GCC 64-bit warns about assigning a (size_t) (unsigned 64-bit)
    to an (int) (signed 32-bit).  MSVC, however, warns about using the
    unary '-' operator on an unsigned value (even though it is well defined
    by ANSI-C to be ~x+1).  The padding calculation was changed to use a
    different method.  Removed the tests on png_ptr->pass.
276 277 278
  Added contrib/libtests/tarith.c to test internal arithmetic functions from
    png.c. This is a libpng maintainer program used to validate changes to the
    internal arithmetic functions.
279 280 281 282 283 284
  Made read 'inflate' handling like write 'deflate' handling. The read
    code now claims and releases png_ptr->zstream, like the write code.
    The bug whereby the progressive reader failed to release the zstream
    is now fixed, all initialization is delayed, and the code checks for
    changed parameters on deflate rather than always calling
    deflatedEnd/deflateInit.
285
  Validate the zTXt strings in pngvalid.
286 287 288
  Added code to validate the windowBits value passed to deflateInit2().
    If the call to deflateInit2() is wrong a png_warning will be issued
    (in fact this is harmless, but the PNG data produced may be sub-optimal).
289

290
Version 1.6.0beta17 [March 10, 2012]
291
  Fixed PNG_LIBPNG_BUILD_BASE_TYPE definition. 
292 293 294 295 296
  Reject all iCCP chunks after the first, even if the first one is invalid.
  Deflate/inflate was reworked to move common zlib calls into single
    functions [rw]util.c.  A new shared keyword check routine was also added
    and the 'zbuf' is no longer allocated on progressive read.  It is now
    possible to call png_inflate() incrementally.
297 298 299 300
  If benign errors are disabled use maximum window on ancilliary inflate.
    This works round a bug introduced in 1.5.4 where compressed ancillary
    chunks could end up with a too-small windowBits value in the deflate
    header.
301

302
Version 1.6.0beta18 [March 16, 2012]
303
  Issue a png_benign_error() instead of png_warning() about bad palette index.
304
  In pngtest, treat benign errors as errors if "-strict" is present.
305 306
  Fixed an off-by-one error in the palette index checking function.
  Fixed a compiler warning under Cygwin (Windows-7, 32-bit system)
307 308 309
  Revised example.c to put text strings in a temporary character array
    instead of directly assigning string constants to png_textp members.
    This avoids compiler warnings when -Wwrite-strings is enabled.
310 311 312 313
  Added output flushing to aid debugging under Visual Studio. Unfortunately
    this is necessary because the VS2010 output window otherwise simply loses
    the error messages on error (they weren't flushed to the window before
    the process exited, apparently!)
314 315 316 317 318
  Added configuration support for benign errors and changed the read
    default. Also changed some warnings in the iCCP and sRGB handling
    from to benign errors. Configuration now makes read benign
    errors warnings and write benign errors to errors by default (thus
    changing the behavior on read).  The simplified API always forces
319
    read benign errors to warnings (regardless of the system default, unless
320
    this is disabled in which case the simplified API can't be built.)
321

322
Version 1.6.0beta19 [March 18,2012]
323 324 325 326 327 328 329 330 331
  Work around for duplicate row start calls; added warning messages.
    This turns on PNG_FLAG_DETECT_UNINITIALIZED to detect app code that
    fails to call one of the 'start' routines (not enabled in libpng-1.5
    because it is technically an API change, since it did normally work
    before.)  It also makes duplicate calls to png_read_start_row (an
    internal function called at the start of the image read) benign, as
    they were before changes to use png_inflate_claim. Somehow webkit is
    causing this to happen; this is probably a mis-feature in the zlib
    changes so this commit is only a work-round.
332 333 334 335 336
  Removed erroneous setting of DETECT_UNINITIALIZED and added more
    checks. The code now does a png_error if an attempt is made to do the
    row initialization twice; this is an application error and it has
    serious consequences because the transform data in png_struct is
    changed by each call.
337 338 339
  Added application error reporting and added chunk names to read
    benign errors; also added --strict to pngstest - not enabled
    yet because a warning is produced.
340 341
  Avoid the double gamma correction warning in the simplified API.
    This allows the --strict option to pass in the pngstest checks
342

343
Version 1.6.0beta20 [March 29, 2012]
344
  Changed chunk handler warnings into benign errors, incrementally load iCCP
345
  Added checksum-icc.c to contrib/tools
346
  Prevent PNG_EXPAND+PNG_SHIFT doing the shift twice.
347 348 349
  Recognize known sRGB ICC profiles while reading; prefer writing the
    iCCP profile over writing the sRGB chunk, controlled by the
    PNG_sRGB_PROFILE_CHECKS option.
350
  Revised png_set_text_2() to avoid potential memory corruption (fixes
351
    CVE-2011-3048, also known as CVE-2012-3425).
352

353
Version 1.6.0beta21 [April 27, 2012]
354 355 356 357
  Revised scripts/makefile.darwin: use system zlib; remove quotes around
    architecture list; add missing ppc architecture; add architecture options
    to shared library link; don't try to create a shared lib based on missing
    RELEASE variable.
358
  Enable png_set_check_for_invalid_index() for both read and write.
359 360
  Removed #ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED in pngpriv.h around
    declaration of png_handle_unknown().
361 362
  Added -lssp_nonshared in a comment in scripts/makefile.freebsd
    and changed deprecated NOOBJ and NOPROFILE to NO_OBJ and NO_PROFILE.
363

364
Version 1.6.0beta22 [May 23, 2012]
365 366
  Removed need for -Wno-cast-align with clang.  clang correctly warns on
    alignment increasing pointer casts when -Wcast-align is passed. This
367 368 369 370 371
    fixes the cases that clang warns about either by eliminating the
    casts from png_bytep to png_uint_16p (pngread.c), or, for pngrutil.c
    where the cast is previously verified or pngstest.c where it is OK, by
    introducing new png_aligncast macros to do the cast in a way that clang
    accepts.
372

373
Version 1.6.0beta23 [June 6, 2012]
374
  Revised CMakeLists.txt to not attempt to make a symlink under mingw.
375 376 377
  Made fixes for new optimization warnings from gcc 4.7.0. The compiler
    performs an optimization which is safe; however it then warns about it.
    Changing the type of 'palette_number' in pngvalid.c removes the warning.
378 379
  Do not depend upon a GCC feature macro being available for use in generating
    the linker mapfile symbol prefix.
380 381 382
  Improved performance of new do_check_palette_indexes() function (only
    update the value when it actually increases, move test for whether
    the check is wanted out of the function.
383

384 385
Version 1.6.0beta24 [June 7, 2012]
  Don't check palette indexes if num_palette is 0 (as it can be in MNG files).
386

387 388 389 390 391 392 393
Version 1.6.0beta25 [June 16, 2012]
  Revised png_set_keep_unknown_chunks() so num_chunks < 0 means ignore all
    unknown chunks and all known chunks except for IHDR, PLTE, tRNS, IDAT,
    and IEND.  Previously it only meant ignore all unknown chunks, the
    same as num_chunks == 0. Revised png_image_skip_unused_chunks() to
    provide a list of chunks to be processed instead of a list of chunks to
    ignore.  Revised contrib/gregbook/readpng2.c accordingly.
394

395
Version 1.6.0beta26 [July 10, 2012]
396 397
  Removed scripts/makefile.cegcc from the *.zip and *.7z distributions; it
    depends on configure, which is not included in those archives.
398
  Moved scripts/chkfmt to contrib/tools.
399
  Changed "a+w" to "u+w" in Makefile.in to fix CVE-2012-3386.
400

401
Version 1.6.0beta27 [August 11, 2012]
402
  Do not compile PNG_DEPRECATED, PNG_ALLOC and PNG_PRIVATE when __GNUC__ < 3.
403
  Do not use __restrict when GNUC is <= 3.1
404
  Removed references to png_zalloc() and png_zfree() from the manual.
405 406 407 408 409 410 411
  Fixed configurations where floating point is completely disabled.  Because
    of the changes to support symbol prefixing PNG_INTERNAL_FUNCTION declares
    floating point APIs during libpng builds even if they are completely
    disabled. This requires the png floating point types (png_double*) to be
    declared even though the functions are never actually defined.  This
    change provides a dummy definition so that the declarations work, yet any
    implementation will fail to compile because of an incomplete type.
412 413 414
  Re-eliminated the use of strcpy() in pngtest.c.  An unncessary use of
    strcpy() was accidentally re-introduced in libpng16; this change replaces
    it with strncpy().
415 416
  Eliminated use of png_sizeof(); use sizeof() instead.
  Use a consistent style for (sizeof type) and (sizeof (array))
417 418 419 420 421 422 423
  Cleanup of png_set_filler().  This function does very different things on
    read and write.  In libpng 1.6 the two cases can be distinguished and
    considerable code cleanup, and extra error checking, is possible.  This
    makes calls on the write side that have no effect be ignored with a
    png_app_error(), which can be disabled in the app using
    png_set_benign_errors(), and removes the spurious use of usr_channels
    on the read side.
424 425
  Insist on autotools 1.12.1 for git builds because there are security issues
    with 1.12 and insisting on anything less would allow 1.12 to be used.
426
  Removed info_ptr->signature[8] from WRITE-only builds.
427 428 429 430 431 432
  Add some conditions for compiling png_fixed().  This is a small function
    but it requires "-lm" on some platforms.
  Cause pngtest --strict to fail on any warning from libpng (not just errors)
    and cause it not to fail at the comparison step if libpng lacks support
    for writing chunks that it reads from the input (currently only implemented
    for compressed text chunks).
433 434 435 436
  Make all three "make check" test programs work without READ or WRITE support.
    Now "make check" will succeed even if libpng is compiled with -DPNG_NO_READ
    or -DPNG_NO_WRITE.  The tests performed are reduced, but the basic reading
    and writing of a PNG file is always tested by one or more of the tests.
437 438 439 440
  Consistently use strlen(), memset(), memcpy(), and memcmp() instead of the
    png_strlen(), png_memset(), png_memcpy(), and png_memcmp() macros.
  Removed the png_sizeof(), png_strlen(), png_memset(), png_memcpy(), and
    png_memcmp() macros.
441 442
  Work around gcc 3.x and Microsoft Visual Studio 2010 complaints. Both object
    to the split initialization of num_chunks.
443

444
Version 1.6.0beta28 [August 29, 2012]
445 446 447 448 449 450 451
  Unknown handling fixes and clean up. This adds more correct option
    control of the unknown handling, corrects the pre-existing bug where
    the per-chunk 'keep' setting is ignored and makes it possible to skip
    IDAT chunks in the sequential reader (broken in earlier 1.6 versions).
    There is a new test program, test-unknown.c, which is a work in progress
    (not currently part of the test suite).  Comments in the header files now
    explain how the unknown handling works.
452 453 454 455 456 457 458
  Allow fine grain control of unknown chunk APIs. This change allows
    png_set_keep_unknown_chunks() to be turned off if not required and causes
    both read and write to behave appropriately (on read this is only possible
    if the user callback is used to handle unknown chunks).  The change
    also removes the support for storing unknown chunks in the info_struct
    if the only unknown handling enabled is via the callback, allowing libpng
    to be configured with callback reading and none of the unnecessary code.
459 460 461 462 463
  Corrected fix for unknown handling in pngtest. This reinstates the
    libpng handling of unknown chunks other than vpAg and sTER (including
    unsafe-to-copy chunks which were dropped before) and eliminates the
    repositioning of vpAg and sTER in pngtest.png by changing pngtest.png
    (so the chunks are where libpng would put them).
464 465 466 467 468 469 470
  Added "tunknown" test and corrected a logic error in png_handle_unknown()
    when SAVE support is absent.  Moved the shell test scripts for
    contrib/libtests from the libpng top directory to contrib/libtests.
    png_handle_unknown() must always read or skip the chunk, if
    SAVE_UNKNOWN_CHUNKS is turned off *and* the application does not set
    a user callback an unknown chunk will not be read, leading to a read
    error, which was revealed by the "tunknown" test.
471 472 473 474 475 476 477 478 479 480 481 482
  Cleaned up and corrected ICC profile handling.
    contrib/libtests/makepng: corrected 'rgb' and 'gray' cases.  profile_error
    messages could be truncated; made a correct buffer size calculation and
    adjusted pngerror.c appropriately. png_icc_check_* checking improved;
    changed the functions to receive the correct color type of the PNG on read
    or write and check that it matches the color space of the profile (despite
    what the comments said before, there is danger in assuming the app will
    cope correctly with an RGB profile on a grayscale image and, since it
    violates the PNG spec, allowing it is certain to produce inconsistent
    app behavior and might even cause app crashes.) Check that profiles
    contain the tags needed to process the PNG (tags all required by the ICC
    spec). Removed unused PNG_STATIC from pngpriv.h.
483

484
Version 1.6.0beta29 [September 4, 2012]
485 486
  Fixed the simplified API example programs and improved the error message
    if the version field is not set.
487
  Added contrib/examples/* to the *.zip and *.7z distributions.
488 489
  Updated simplified API synopses and description of the png_image structure
    in the manual.
490 491 492 493 494 495
  Made makepng and pngtest produce identical PNGs, add "--relaxed" option
    to pngtest. The "--relaxed" option turns off the benign errors that are
    enabled by default in pre-RC builds. makepng can now write ICC profiles
    where the length has not been extended to a multiple of 4, and pngtest
    now intercepts all libpng errors, allowing the previously-introduced
    "--strict test" on no warnings to actually work.
496 497 498 499 500
  Improved ICC profile handling including cHRM chunk generation and fixed
    Cygwin+MSVC build errors. The ICC profile handling now includes more
    checking.  Several errors that caused rejection of the profile are now
    handled with a warning in such a way that the invalid profiles will be
    read by default in release (but not pre-RC) builds but will not be
501
    written by default.  The easy part of handling the cHRM chunk is written,
502 503 504
    where the ICC profile contains the required data.  The more difficult
    part plus guessing a gAMA value requires code to pass selected RGB values
    through the profile.
505

506
Version 1.6.0beta30 [October 24, 2012]
507 508 509 510 511 512 513 514 515
  Changed ICC profile matrix/vector types to not depend on array type rules.
    By the ANSI-C standard the new types should be identical to the previous
    versions, and all known versions of gcc tested with the previous versions
    except for GCC-4.2.1 work with this version.  The change makes the ANSI-C
    rule that const applied to an array of elements applies instead to the
    elements in the array moot by explicitly applying const to the base
    elements of the png_icc_matrix and png_icc_vector types. The accidental
    (harmless) 'const' previously applied to the parameters of two of the
    functions have also been removed.
516 517 518
  Added a work around for GCC 4.2 optimization bug.
  Marked the broken (bad white point) original HP sRGB profiles correctly and
    correct comments.
519
  Added -DZ_SOLO to contrib/pngminim/*/makefile to work with zlib-1.2.7
520 521 522 523
  Use /MDd for vstudio debug builds. Also added pngunkown to the vstudio
    builds, fixed build errors and corrected a minor exit code error in
    pngvalid if the 'touch' file name is invalid.
  Add updated WARNING file to projects/vstudio from libpng 1.5/vstudio
524 525
  Fixed build when using #define PNG_NO_READ_GAMMA in png_do_compose() in
    pngrtran.c (Domani Hannes).
526

527
Version 1.6.0beta31 [November 1, 2012]
528
  Undid the erroneous change to vstudio/pngvalid build in libpng-1.6.0beta30.
529
  Made pngvalid so that it will build outside the libpng source tree.
530 531 532 533 534 535 536 537 538 539
  Made builds -DPNG_NO_READ_GAMMA compile (the unit tests still fail).
  Made PNG_NO_READ_GAMMA switch off interfaces that depend on READ_GAMMA.
    Prior to 1.6.0 switching off READ_GAMMA did unpredictable things to the
    interfaces that use it (specifically, png_do_background in 1.4 would
    simply display composite for grayscale images but do composition
    with the incorrect arithmetic for color ones). In 1.6 the semantic
    of -DPNG_NO_READ_GAMMA is changed to simply disable any interface that
    depends on it; this obliges people who set it to consider whether they
    really want it off if they happen to use any of the interfaces in
    question (typically most users who disable it won't).
540 541
  Fixed GUIDs in projects/vstudio. Some were duplicated or missing,
    resulting in VS2010 having to update the files.
542 543 544 545
  Removed non-working ICC profile support code that was mostly added to
    libpng-1.6.0beta29 and beta30. There was too much code for too little
    gain; implementing full ICC color correction may be desireable but is left
    up to applications.
546

547
Version 1.6.0beta32 [November 25, 2012]
548 549 550
  Fixed an intermittent SEGV in pngstest due to an uninitialized array element.
  Added the ability for contrib/libtests/makepng.c to make a PNG with just one
    color. This is useful for debugging pngstest color inaccuracy reports.
551
  Fixed error checking in the simplified write API (Olaf van der Spek)
552
  Made png_user_version_check() ok to use with libpng version 1.10.x and later.
553

554
Version 1.6.0beta33 [December 15, 2012]
555 556
  Fixed typo in png.c (PNG_SET_CHUNK_MALLOC_MAX should be PNG_CHUNK_MALLOC_MAX)
    that causes the MALLOC_MAX limit not to work (John Bowler)
557 558
  Change png_warning() to png_app_error() in pngwrite.c and comment the
    fall-through condition.
559
  Change png_warning() to png_app_warning() in png_write_tRNS().
560 561 562
  Rearranged the ARM-NEON optimizations: Isolated the machine specific code
    to the hardware subdirectory and added comments to pngrutil.c so that
    implementors of other optimizations know what to do.
563
  Fixed cases of unquoted DESTDIR in Makefile.am
564
  Rebuilt Makefile.in, etc., with autoconf-2.69 and automake-1.12.5.
565

566
Version 1.6.0beta34 [December 19, 2012]
567
  Cleaned up whitespace in the synopsis portion of the manpage "libpng.3"
568
  Disassembled the version number in scripts/options.awk (necessary for
569
    building on SunOs).
570

571
Version 1.6.0beta35 [December 23, 2012]
572 573
  Made default Zlib compression settings be configurable. This adds #defines to
    pnglibconf.h to control the defaults.
574 575 576 577 578
  Fixed Windows build issues, enabled ARM compilation. Various warnings issued
    by earlier versions of GCC fixed for Cygwin and Min/GW (which both use old
    GCCs.) ARM support is enabled by default in zlib.props (unsupported by
    Microsoft) and ARM compilation is made possible by deleting the check for
    x86. The test programs cannot be run because they are not signed.
579

580
Version 1.6.0beta36 [January 2, 2013]
581 582 583
  Discontinued distributing libpng-1.x.x.tar.bz2.
  Discontinued distributing libpng-1.7.0-1.6.0-diff.txt and similar.
  Rebuilt configure with autoconf-2.69 (inadvertently not done in beta33)
584
  Fixed 'make distcheck' on SUN OS - libpng.so was not being removed
585

586 587 588
Version 1.6.0beta37 [January 10, 2013]
  Fixed conceivable but difficult to repro overflow. Also added two test
    programs to generate and test a PNG which should have the problem.
589

590 591 592
Version 1.6.0beta39 [January 19, 2013]
  Again corrected attempt at overflow detection in png_set_unknown_chunks().
  Added overflow detection in png_set_sPLT() and png_set_text_2().
593

594 595
Version 1.6.0beta40 [January 20, 2013]
  Use consistent handling of overflows in text, sPLT and unknown png_set_* APIs
596

597 598
Version 1.6.0beta41 [January 20, 2013]

599
  ===========================================================================
600 601 602
                       NOTICE November 17, 2012:
     The location of the git repository at SourceForge has changed.
               Visit http://libpng.sf.net/ for details.
603 604
  ===========================================================================

605 606 607 608 609 610 611
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