864270e18f
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.
207 lines
11 KiB
Plaintext
207 lines
11 KiB
Plaintext
|
|
Libpng 1.6.0beta11 - February 10, 2012
|
|
|
|
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.
|
|
|
|
Files available for download:
|
|
|
|
Source files with LF line endings (for Unix/Linux) and with a
|
|
"configure" script
|
|
|
|
1.6.0beta11.tar.xz (LZMA-compressed, recommended)
|
|
1.6.0beta11.tar.gz
|
|
1.6.0beta11.tar.bz2
|
|
|
|
Source files with CRLF line endings (for Windows), without the
|
|
"configure" script
|
|
|
|
lp160b11.7z (LZMA-compressed, recommended)
|
|
lp160b11.zip
|
|
|
|
Other information:
|
|
|
|
1.6.0beta11-README.txt
|
|
1.6.0beta11-LICENSE.txt
|
|
|
|
Changes since the last public release (1.5.7):
|
|
|
|
Version 1.6.0beta01 [December 15, 2011]
|
|
Removed machine-generated configure files from the GIT repository (they will
|
|
continue to appear in the tarball distributions).
|
|
Restored the new 'simplified' API, which was started in libpng-1.5.7beta02
|
|
but later deleted from libpng-1.5.7beta05.
|
|
Added example programs for the new 'simplified' API.
|
|
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).
|
|
New tools directory containing tools used to generate libpng code.
|
|
Fixed race conditions in parallel make builds. With higher degrees of
|
|
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.
|
|
|
|
Version 1.6.0beta02 [December 21, 2011]
|
|
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.
|
|
|
|
Version 1.6.0beta03 [December 22, 2011]
|
|
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.
|
|
|
|
Version 1.6.0beta04 [December 30, 2011]
|
|
Regenerated configure scripts with automake-1.11.2
|
|
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.
|
|
Added pngvalid.c compile time checks for const APIs.
|
|
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.
|
|
Moved AC_MSG_CHECKING([if libraries can be versioned]) later to the proper
|
|
location in configure.ac (Gilles Espinasse).
|
|
Changed png_memcpy to C assignment where appropriate. Changed all those
|
|
uses of png_memcpy that were doing a simple assignment to assignments
|
|
(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.
|
|
|
|
Version 1.6.0beta05 [January 15, 2012]
|
|
Updated manual with description of the simplified API (copied from png.h)
|
|
Fix bug in pngerror.c: some long warnings were being improperly truncated
|
|
(CVE-2011-3464, bug introduced in libpng-1.5.3beta05).
|
|
|
|
Version 1.6.0beta06 [January 24, 2012]
|
|
Added palette support to the simplified APIs. This commit
|
|
changes some of the macro definitions in png.h, app code
|
|
may need corresponding changes.
|
|
Increased the formatted warning buffer to 192 bytes.
|
|
Added color-map support to simplified API. This is an initial version for
|
|
review; the documentation has not yet been updated.
|
|
Fixed Min/GW uninstall to remove libpng.dll.a
|
|
|
|
Version 1.6.0beta07 [January 28, 2012]
|
|
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.
|
|
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.
|
|
Rewrote autogen.sh to run autoreconf instead of running tools one-by-one.
|
|
Conditionalize the install rules for MINGW and CYGWIN in CMakeLists.txt and
|
|
set CMAKE_LIBRARY_OUTPUT_DIRECTORY to "lib" on all platforms (C. Yapp).
|
|
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,
|
|
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.
|
|
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.
|
|
|
|
Version 1.6.0beta08 [February 1, 2012]
|
|
Fixed Image::colormap misalignment in pngstest.c
|
|
Check libtool/libtoolize version number (2.4.2) in configure.ac
|
|
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
|
|
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.
|
|
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.
|
|
Added symbol prefixing that allows all the libpng external symbols
|
|
to be prefixed (suggested by Reuben Hawkins).
|
|
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.
|
|
Updated INSTALL to explain that autogen.sh must be run in a GIT clone,
|
|
not in a libpng directory extracted from a tar distribution.
|
|
|
|
Version 1.6.0beta09 [February 1, 2011]
|
|
Reverted the prebuilt configure files to libpng-1.6.0beta05 condition.
|
|
|
|
Version 1.6.0beta10 [February 3, 2012]
|
|
Added Z_SOLO for zlib-1.2.6+ and correct pngstest tests
|
|
Updated list of test images in CMakeLists.txt
|
|
Updated the prebuilt configure files to current condition.
|
|
Revised INSTALL information about autogen.sh; it works in tar distributions.
|
|
|
|
Version 1.6.0beta11 [February 10, 2012]
|
|
Fix character count in pngstest command in projects/owatcom/pngstest.tgt
|
|
Revised test-pngstest.sh to report PASS/FAIL for each image.
|
|
Updated documentation about the simplified API.
|
|
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.
|
|
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.
|
|
|
|
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
|