OptiPNG Changelog

What's new in OptiPNG 0.7.8

Nov 4, 2023
  • Upgraded libpng to version 1.6.40.
  • Upgraded zlib to version 1.3-optipng.
  • Upgraded cexcept to version 2.0.2-optipng.
  • Fixed a global-buffer-overflow vulnerability in the GIF reader.
  • [Reported by Zeng Yunxiang; fixed by Thomas Hurst]
  • Fixed a stack-print-after-scope defect in the error handler.
  • Fixed an assertion failure in the image reduction module.
  • Fixed the command-line wildargs expansion in the Windows port.
  • Raised the minimum required libpng version from 1.2.9 to 1.6.35.
  • Raised the minimum required zlib version from 1.2.1 to 1.2.8.
  • Refactored the structured exception handling.

New in OptiPNG 0.7.7 (Dec 28, 2017)

  • Upgraded libpng to version 1.6.34.
  • Upgraded zlib to version 1.2.11-optipng.
  • Upgraded minitiff to version 0.2.
  • Fixed a buffer overflow vulnerability in the GIF decoder.
  • Fixed an integer overflow vulnerability in the TIFF decoder.
  • Fixed the build on DJGPP.
  • Disallowed out-of-bounds values in rangeset options.

New in OptiPNG 0.7.6 (Dec 28, 2017)

  • Upgraded libpng to version 1.6.21.
  • Fixed an assertion failure in the image reduction code. [Fixed by upgrading libpng]
  • Fixed various security-sensitive defects in the BMP decoder.
  • Fixed a benign uninitialized memory read in the GIF decoder.
  • Fixed a build failure occurring under the Estonian (et_EE) locale.
  • Fixed a build failure occurring on Mac OS X, FreeBSD, and possibly other systems that lack POSIX-compliant high-resolution timestamps.
  • Fixed a typo causing build failures in 32-bit ANSI C compilation.

New in OptiPNG 0.7.5 (Mar 25, 2014)

  • Upgraded libpng to version 1.6.10-optipng.
  • Upgraded zlib to version 1.2.8-optipng.
  • Fixed various build issues with libpng-1.5 and libpng-1.6. (Thanks in part to Oliver Schneider for the contribution.)
  • Allowed the handling of huge image files (> millions of pixels per row or column) to be independent of the libpng version.
  • Fixed a build issue with Clang.
  • Added various enhancements to the configure script.

New in OptiPNG 0.7.4 (Oct 22, 2012)

  • Fixed the previous fix, which failed to fix the option -fix.

New in OptiPNG 0.7.3 (Oct 22, 2012)

  • Fixed a use-after-free vulnerability in the palette reduction code.
  • This vulnerability was accidentally introduced in version 0.7.

New in OptiPNG 0.7.2 (Aug 25, 2012)

  • Upgraded libpng to version 1.4.12.
  • Upgraded zlib to version 1.2.7-optipng.
  • Fixed the display of huge (4GB+) file/IDAT sizes on 32-bit platforms.
  • Issued a proper error message if the output IDAT can't fit in 2GB.
  • Acknowledged this limitation in the user manual.
  • Thanks to John Sauter for the report.)
  • Fixed the output file cleanup that should occur after a write error.
  • Added the option -debug and various undocumented debug features.
  • Moved the PNG reduction module (opngreduc) to a separate sub-project.

New in OptiPNG 0.7.1 (Mar 20, 2012)

  • Fixed a regression in the reduction of palette-encoded grayscale images. This regression was introduced in version 0.7.

New in OptiPNG 0.6.5 (Jan 25, 2011)

  • Upgraded libpng to version 1.4.5-optipng [private]
  • Upgraded zlib to version 1.2.5-optipng [private]
  • Fixed the I/O states (in libpng 1.4.5); they caused incorrect file reads in some rare cases.
  • Fixed processing of PNG files with chunks of size 0.
  • Fixed a display error in the TIFF import.
  • Improved checking of the arguments of -f, -zc, -zm and -zs.
  • Removed quirks from the rangeset option argument syntax.
  • Fixed a build issue under the system-supplied libpng-1.4.
  • Resolved forward-compatibility issues regarding libpng-1.5; however, the system-supplied libpng-1.5 is not yet supported.
  • Added various enhancements to the configure+make build system.

New in OptiPNG 0.6.4 (Oct 22, 2010)

  • Upgraded libpng to version 1.4.1-optipng [private]
  • Upgraded zlib to version 1.2.4-optipng [private]
  • Added the option -nx.
  • Clarified the behavior of -nz and the relation between -nz and -o0.
  • Added a filesystem check (resolving normalized paths, symlinks, etc.) to better detect when the output overwrites the input.
  • Enabled automatic wildcard expansion (i.e. globbing) on Win64.
  • Fixed a Unicode build issue on Windows.

New in OptiPNG 0.6.3 (Oct 22, 2010)

  • Upgraded libpng to version 1.2.36-optipng [private]
  • Fixed a use-after-free error in the GIF reader.
  • Flushed the output log to display the current trial in real time.
  • This only worked on Windows in the previous version.
  • Fixed an error in reporting unrecognized file formats.
  • Removed the requirement to "fix" TIFF files that contain unrecognized metadata.
  • Simplified the option abbreviation rules. Option names can now be abbreviated to their shortest unique prefix, as in X11 application.

New in OptiPNG 0.6.2 (Oct 22, 2010)

  • Upgraded libpng to version 1.2.33-optipng [private]
  • Put back a speed optimization, accidentally removed in version 0.6, allowing singleton trials (-o1) to be bypassed in certain conditions.
  • Fixed an array overflow in the BMP reader.
  • Fixed the loss of private chunks under the -snip option.
  • Produced a more concise on-screen output in the non-verbose mode.)
  • Added a programming interface to the optimization engine, in order to facilitate the development of PNG-optimizing GUI apps and plugins.

New in OptiPNG 0.6.1 (Oct 22, 2010)

  • Upgraded cexcept to version 2.0.1.
  • Added a configure script, to be used instead of unix-secure.mak.
  • Fixed a build issue that occured when using libpng from the system.
  • Fixed processing when image reduction yields an output larger than the original.
  • Fixed behavior of -preserve.
  • Removed displaying of partial progress when abandoning IDATs under the -v option. The percentages displayed were not very accurate.

New in OptiPNG 0.6 (Oct 22, 2010)

  • Upgraded libpng to version 1.2.29-optipng [private]
  • Implemented grayscale(alpha)-to-palette reductions.
  • Improved conversion of bKGD info during RGB-to-palette reductions.
  • Fixed conversion of bKGD and tRNS during 16-to-8-bit reductions.
  • Added support for compressed BMP (incl. PNG-compressed BMP, you bet!)
  • Improved the speed of reading raw PNM files.
  • Recognized PNG digital signatures (dSIG) and disabled optimization in their presence, to preserve their integrity.
  • Allowed the user to enforce the optimization of dSIG'ed files.
  • Recognized APNG animation files and disabled reductions to preserve their integrity.
  • Added the -snip option, to allow the user to "snip" one image out of a multi-image file, such as animated GIF, multi-page TIFF, or APNG.
  • Improved recovery of PNG files with incomplete IDAT.
  • Fixed a crash triggered by the use of -log on some platforms.
  • Fixed behavior of -out and -dir when the input is already optimized.
  • Provided more detailed image information at the start of processing.
  • Provided a more detailed summary at the end of processing, under the presence of the -v option and/or the occurence of exceptional events.

New in OptiPNG 0.5.5 (Aug 24, 2007)

  • Upgraded libpng to version 1.2.15-optipng [private]
  • Used a previously-missed RGB-to-palette reduction opportunity for images containing 256 distinct colors. (Thanks to Joachim Kluge for the report.)
  • Fixed conversion of bKGD info during rgb-to-palette reductions. (Thanks to Matthew Fearnley for the report.)
  • Fixed pre-computation of iterations. (Thanks to Matthew Fearnley for the report.)
  • Eliminated a false alarm when processing RGB images with tRNS in Unix-secure mode. (Thanks to Till Mass for the report, and thanks to Nelson A. de Oliveira for the fix.)
  • Fixed behavior of -out and -dir when changing interlacing. (Thanks to Martin Packman for the report.)
  • Fixed behavior of "-dir [DRIVE]:" on Windows.