libpng-1.6.24 is available
Glenn Randers-Pehrson <[email protected]> Wed, 3 Aug 2016 22:52:18 -0400
| Newsgroups | gmane.comp.graphics.png.announce |
|---|---|
| Message-ID | <CA+PdXctN5RH5gYsYCo4_JjWnF9GuKBRs6dopc02+y596xe-Fyg__43571.2048355073$1470279183$gmane$org@mail.gmail.com> |
--===============7609090374597329065==
Content-Type: multipart/alternative; boundary=001a11475376ca85c40539360921
--001a11475376ca85c40539360921
Content-Type: text/plain; charset=UTF-8
libpng-1.6.24 is available from
ftp://ftp.simplesystems.org/pub/png/src/libpng16
and from
http://libpng.sf.net
Changes since the last public release (1.6.23):
Avoid potential overflow of the PNG_IMAGE_SIZE macro. This macro
is not used within libpng, but is used in some of the examples.
Correct filter heuristic overflow handling. This was broken when the
write filter code was moved out-of-line; if there is a single filter and
the heuristic sum overflows the calculation of the filtered line is not
completed. In versions prior to 1.6 the code was duplicated in-line
and the check not performed, so the filter operation completed; however,
in the multi-filter case where the sum is performed the 'none' filter
would
be selected if all the sums overflowed, even if it wasn't in the filter
list. The fix to the first problem is simply to provide PNG_SIZE_MAX as
the current lmins sum value; this means the sum can never exceed it and
overflows silently. A reasonable compiler that does choose to inline
the code will simply eliminate the sum check.
The fix to the second problem is to use high precision arithmetic (this is
implemented in 1.7), however a simple safe fix here is to chose the
lowest
numbered filter in the list from png_set_filter (this only works if the
first problem is also fixed) (John Bowler).
Use a more efficient absolute value calculation on SSE2 (Matthieu
Darbois).
Fixed the case where PNG_IMAGE_BUFFER_SIZE can overflow in the application
as a result of the application using an increased 'row_stride';
previously
png_image_finish_read only checked for overflow on the base calculation
of
components. (I.e. it checked for overflow of a 32-bit number on the
total
number of pixel components in the output format, not the possibly
padded row
length and not the number of bytes, which for linear formats is twice
the
number of components.)
MSVC does not like '-(unsigned)', so replaced it with 0U-(unsigned)
MSVC does not like (uInt) = -(unsigned) (i.e. as an initializer), unless
the conversion is explicitly invoked by a cast.
Put the SKIP definition in the correct place. It needs to come after the
png.h include (see all the other .c files in contrib/libtests) because
it
depends on PNG_LIBPNG_VER.
Removed the three compile warning options from the individual project
files into the zlib.props globals. It increases the warning level from
4
to All and adds a list of the warnings that need to be turned off.
This is
semi-documentary; the intent is to tell libpng users which warnings have
been examined and judged non-fixable at present. The warning about
structure padding is fixable, but it would be a signficant change
(moving
structure members around).
Optimized absolute value calculation in filter selection, similar to
code in the PAETH decoder in pngrutil.c. Build with PNG_USE_ABS to
use this.
Added pngcp to the build together with a pngcp.dfa configuration test.
Added high resolution timing to pngcp.
Added "Common linking failures" section to INSTALL.
Relocated misplaced #endif in png.c sRGB profile checking.
Fixed two Coverity issues in pngcp.c.
Avoid filter-selection heuristic sum calculations in cases where only one
filter is a candidate for selection. This trades off code size (added
private png_setup_*_row_only() functions) for speed.
Fixed some indentation to comply with our coding style.
Added contrib/tools/reindent.
Eliminated unnecessary tests of boolean png_isaligned() vs 0.
Conditionally compile SSE2 headers in contrib/intel/intel_sse.patch
Conditionally compile png_decompress_chunk().
Conditionally compile ARM_NEON headers in pngpriv.h
Updated contrib/intel/intel_sse.patch
Glenn
--001a11475376ca85c40539360921
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
<div dir=3D"ltr"><div>libpng-1.6.24 is available from<br><a href=3D"ftp://f=
tp.simplesystems.org/pub/png/src/libpng16">ftp://ftp.simplesystems.org/pub/=
png/src/libpng16</a><br>and from<br><a href=3D"http://libpng.sf.net">http:/=
/libpng.sf.net</a><br><br>Changes since the last public release (1.6.23):<b=
r>=C2=A0 Avoid potential overflow of the PNG_IMAGE_SIZE macro.=C2=A0 This m=
acro<br>=C2=A0=C2=A0=C2=A0 is not used within libpng, but is used in some o=
f the examples.<br>=C2=A0 Correct filter heuristic overflow handling. This =
was broken when the<br>=C2=A0=C2=A0=C2=A0 write filter code was moved out-o=
f-line; if there is a single filter and<br>=C2=A0=C2=A0=C2=A0 the heuristic=
sum overflows the calculation of the filtered line is not<br>=C2=A0=C2=A0=
=C2=A0 completed.=C2=A0 In versions prior to 1.6 the code was duplicated in=
-line<br>=C2=A0=C2=A0=C2=A0 and the check not performed, so the filter oper=
ation completed; however,<br>=C2=A0=C2=A0=C2=A0 in the multi-filter case wh=
ere the sum is performed the 'none' filter would<br>=C2=A0=C2=A0=C2=
=A0 be selected if all the sums overflowed, even if it wasn't in the fi=
lter<br>=C2=A0=C2=A0=C2=A0 list.=C2=A0 The fix to the first problem is simp=
ly to provide PNG_SIZE_MAX as<br>=C2=A0=C2=A0=C2=A0 the current lmins sum v=
alue; this means the sum can never exceed it and<br>=C2=A0=C2=A0=C2=A0 over=
flows silently.=C2=A0 A reasonable compiler that does choose to inline<br>=
=C2=A0=C2=A0=C2=A0 the code will simply eliminate the sum check.<br>=C2=A0 =
The fix to the second problem is to use high precision arithmetic (this is<=
br>=C2=A0=C2=A0=C2=A0 implemented in 1.7), however a simple safe fix here i=
s to chose the lowest<br>=C2=A0=C2=A0=C2=A0 numbered filter in the list fro=
m png_set_filter (this only works if the<br>=C2=A0=C2=A0=C2=A0 first proble=
m is also fixed) (John Bowler).<br>=C2=A0 Use a more efficient absolute val=
ue calculation on SSE2 (Matthieu Darbois).<br>=C2=A0 Fixed the case where P=
NG_IMAGE_BUFFER_SIZE can overflow in the application<br>=C2=A0=C2=A0=C2=A0 =
as a result of the application using an increased 'row_stride'; pre=
viously<br>=C2=A0=C2=A0=C2=A0 png_image_finish_read only checked for overfl=
ow on the base calculation of<br>=C2=A0=C2=A0=C2=A0 components.=C2=A0 (I.e.=
it checked for overflow of a 32-bit number on the total<br>=C2=A0=C2=A0=C2=
=A0 number of pixel components in the output format, not the possibly padde=
d row<br>=C2=A0=C2=A0=C2=A0 length and not the number of bytes, which for l=
inear formats is twice the<br>=C2=A0=C2=A0=C2=A0 number of components.)<br>=
=C2=A0 MSVC does not like '-(unsigned)', so replaced it with 0U-(un=
signed)<br>=C2=A0 MSVC does not like (uInt) =3D -(unsigned) (i.e. as an ini=
tializer), unless<br>=C2=A0=C2=A0=C2=A0 the conversion is explicitly invoke=
d by a cast.<br>=C2=A0 Put the SKIP definition in the correct place. It nee=
ds to come after the<br>=C2=A0=C2=A0=C2=A0 png.h include (see all the other=
.c files in contrib/libtests) because it<br>=C2=A0=C2=A0=C2=A0 depends on =
PNG_LIBPNG_VER.<br>=C2=A0 Removed the three compile warning options from th=
e individual project<br>=C2=A0=C2=A0=C2=A0 files into the zlib.props global=
s.=C2=A0 It increases the warning level from 4<br>=C2=A0=C2=A0=C2=A0 to All=
and adds a list of the warnings that need to be turned off.=C2=A0 This is<=
br>=C2=A0=C2=A0=C2=A0 semi-documentary; the intent is to tell libpng users =
which warnings have<br>=C2=A0=C2=A0=C2=A0 been examined and judged non-fixa=
ble at present.=C2=A0 The warning about<br>=C2=A0=C2=A0=C2=A0 structure pad=
ding is fixable, but it would be a signficant change (moving<br>=C2=A0=C2=
=A0=C2=A0 structure members around).<br>=C2=A0 Optimized absolute value cal=
culation in filter selection, similar to<br>=C2=A0=C2=A0=C2=A0 code in the =
PAETH decoder in pngrutil.c. Build with PNG_USE_ABS to<br>=C2=A0=C2=A0=C2=
=A0 use this.<br>=C2=A0 Added pngcp to the build together with a pngcp.dfa =
configuration test.<br>=C2=A0 Added high resolution timing to pngcp.<br>=C2=
=A0 Added "Common linking failures" section to INSTALL.<br>=C2=A0=
Relocated misplaced #endif in png.c sRGB profile checking.<br>=C2=A0 Fixed=
two Coverity issues in pngcp.c.<br>=C2=A0 Avoid filter-selection heuristic=
sum calculations in cases where only one<br>=C2=A0=C2=A0=C2=A0 filter is a=
candidate for selection. This trades off code size (added<br>=C2=A0=C2=A0=
=C2=A0 private png_setup_*_row_only() functions) for speed.<br>=C2=A0 Fixed=
some indentation to comply with our coding style.<br>=C2=A0 Added contrib/=
tools/reindent.<br>=C2=A0 Eliminated unnecessary tests of boolean png_isali=
gned() vs 0.<br>=C2=A0 Conditionally compile SSE2 headers in contrib/intel/=
intel_sse.patch<br>=C2=A0 Conditionally compile png_decompress_chunk().<br>=
=C2=A0 Conditionally compile ARM_NEON headers in pngpriv.h<br>=C2=A0 Update=
d contrib/intel/intel_sse.patch<br><br></div>Glenn<br></div>
--001a11475376ca85c40539360921--
--===============7609090374597329065==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
------------------------------------------------------------------------------
--===============7609090374597329065==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
png-mng-announce mailing list
png-mng-announce-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/png-mng-announce
--===============7609090374597329065==--