Changes in TIFF v4.5.0 ====================== .. table:: References :widths: auto ====================== ========================================== Current Version v4.5.0 (:tag:`v4.5.0`) Previous Version :doc:`v4.4.0 ` Master Download Site ``_ Master HTTP Site #1 ``_ Master HTTP Site #2 ``_ Master HTTP Site #3 ``_ ====================== ========================================== This document provides a summary of significant changes made to the software between the *previous* and *current* versions (see above). A fully-detailed change summary is provided by the :file:`ChangeLog` file included in the release package and by the Git commit history: Major changes ------------- * Whole code base reformatting of .c/.h files using new .clang-format format * Documentation changed from static HTML and man pages to Restructured Text (rst). HTML and man pages are now build artifacts. Software configuration changes ------------------------------ * SONAME version bumped to 6 due to changes in symbol versioning. * autoconf/cmake: detect (not yet released) libjpeg-turbo 2.2 to take into its capability of handling both 8-bit JPEG and 12-bit JPEG in a single build. * autoconf/cmake: detect sphinx-build to build HTML and man pages * CMakeLists.txt: fix warning with -Wdev * CMake: correctly set default value of 'lzma' option when liblzma is detected (:issue:`482`) * CMake: Moved linking of CMath::CMath into CMath_LIBRARY check. * Fix CMake build to be compatible with FetchContent. * cmake: Correct duplicate definition of _CRT_SECURE_NO_WARNINGS (:issue:`443`) * cmake: Fixes for Visual Studio 2022. * Adds Requires.private generation so that pkg-config can correctly find the dependencies of libtiff. * Fix dependency on libm on Android * cmake: libtiffxx is static on win32 * Fix build in tif_lzw.c * CMake: Add options for disabling tools, tests, contrib and docs. Library changes --------------- New/improved functionalities: * Addition of an open option concept with the new functions :c:func:`TIFFOpenExt`, :c:func:`TIFFOpenWExt`, :c:func:`TIFFFdOpenExt`, :c:func:`TIFFClientOpenExt`, :c:func:`TIFFOpenOptionsAlloc`, :c:func:`TIFFOpenOptionsFree` * Leveraging above mentioned open option concept, addition of a new capability to limit the size of a single dynamic memory allocation done by the library with :c:func:`TIFFOpenOptionsSetMaxSingleMemAlloc` * Leveraging above mentioned open option concept, addition of a new capability to specify per-TIFF handle re-entrant error and warning callbacks with :c:func:`TIFFOpenOptionsSetErrorHandlerExtR` and :c:func:`TIFFOpenOptionsSetWarningHandlerExtR` * Related to IFD-Loop detection refactoring, the number of IFDs that libtiff can browse through has been extended from 65535 to 1048576. This value is a build-time setting that can be configured with CMake's TIFF_MAX_DIR_COUNT variable or autoconf's --with-max-dir-count option. API/ABI breaks: * tdir_t type updated to uint32_t. This type is now used for the return value of :c:func:`TIFFCurrentDirectory` and :c:func:`TIFFNumberOfDirectories`, and as the argument of :c:func:`TIFFSetDirectory` and :c:func:`TIFFUnlinkDirectory` Bug fixes: * TIFFWriteRawStrip(): restore capabilities to append data in the current strip (:issue:`489`) * _TIFFReadEncodedTileAndAllocBuffer(): avoid excessive memory allocation on broken files (:issue:`479`) * TIFFReadRGBATileExt(): fix (unsigned) integer overflow on strips/tiles > 2 GB (oss-fuzz #53137) * Replace sprintf calls with snprintf to fix warnings on macOS 13 SDK * Added warning messages for FIELD_IGNORE tags for writing and for TIFF_SETGET_UNDEFINED for reading added. (:issue:`438`) * tif_dirinfo.c: fix TIFFTAG_CLIPPATH tag declaration (:issue:`439`) * tif_dirinfo.c: fix TIFFTAG_COMPRESSION and _BITSPERSAMPLE tag declaration (:issue:`364`) * Revised handling of TIFFTAG_INKNAMES and related TIFFTAG_NUMBEROFINKS value (:issue:`149`, :issue:`150`, :issue:`152`, :issue:`168`, :issue:`250`, :issue:`269`,:issue:`398`, CVE-2022-3599, :issue:`456`) * TIFFAdvanceDirectory(): fix unsigned-integer-overflow in mapped case (oss-fuzz #52309) * Improved/fixes IFD-Loop Handling (:issue:`455`). * Update getimage to support large raster images. * Presetting of default tag values extended (e.g. PlanarConfig). (:issue:`449`) * Deal with RichTIFFIPTC tag written with LONG type (:issue:`225`) * TIFFSetValue(): Writing IFD8 & LONG8 tags to ClassicTIFF corrected (:issue:`442`) * tif_jpeg.c: allow to pass -DEXPECTED_JPEG_LIB_VERSION=number to do optional compile-time version check * TIFFReadFromUserBuffer(): fix clearing of TIFF_CODERSETUP flag that could cause issues with reading JPEG compressed files * _TIFFCheckFieldIsValidForCodec(): return FALSE when passed a codec-specific tag and the codec is not configured (:issue:`433`, :issue:`486`, CVE-2022-34526) * Add basic 16 bit cielab support. * WEBP codec: avoid temporary buffer and memcpy() on whole tile/strip decoding * tif_predict.c: make horAcc8() work with icc (ICC) 2021.6.0 20220226 -O2 Tools changes ------------- New/improved functionality: * :program:`tiffinfo`: Updated to parse through SubIFDs and show their tags. Bug fixes: * :program:`tiffcrop`: add check if (bps != 1) in writeSingleSection() (:issue:`169`) * :program:`tiffcrop`: Fix too many 'mode' options on command line (:issue:`470` and :issue:`450`) * :program:`tiffcrop`: Fix memory allocation to require a larger buffer (:issue:`271`, :issue:`381`, :issue:`386`, :issue:`388`, :issue:`389`, :issue:`435`, CVE-2022-3570, CVE-2022-3598) * :program:`tiffcrop`: disable incompatibility of -Z, -X, -Y, -z options with any PAGE_MODE_x option (:issue:`411`, CVE-2022-3627, :issue:`413`, CVE-2022-3597, :issue:`426`, CVE-2022-3626) * :program:`tiffcrop`: -S option mutually exclusive (:issue:`349`, :issue:`414`, :issue:`422`, :issue:`423`, :issue:`424`) * :program:`tiffcrop`: fix floating-point exception (:issue:`415`, :issue:`427`, :issue:`428`, CVE-2022-2056, CVE-2022-2057, CVE-2022-2058) * :program:`tiff2pdf`: Don't try to seek into stdout (:issue:`441`) * :program:`tiffinfo`: update curdir from uint16_t to tdir_t for more than 64k IFD handling. Contributed software changes ---------------------------- None