Changes in TIFF v4.7.1 ====================== .. table:: References :widths: auto ====================== ========================================== Current Version v4.7.1 (:tag:`v4.7.1`) Previous Version :doc:`v4.7.0 ` Primary Download Site ``_ Home HTTP Site #1 ``_ Home HTTP Site #2 ``_ ====================== ========================================== 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 ------------- None Software configuration changes ------------------------------ * Define HAVE_JPEGTURBO_DUAL_MODE_8_12 and LERC_STATIC in tif_config.h. * CMake: define WORDS_BIGENDIAN via tif_config.h * doc/CMakeLists.txt: remove useless cmake_minimum_required() * CMake: fix build with LLVM/Clang 17 (fixes :issue:`651`) * CMake: set CMP0074 new policy * Set LINKER_LANGUAGE for C targets with C deps * Export tiffxx cmake target (fixes :issue:`674`) * autogen.sh: Enable verbose wget. * configure.ac: Syntax updates for Autoconf 2.71 * autogen.sh: Re-implement based on autoreconf. Failure to update config.guess/config.sub does not return error (fixes :issue:`672`) * CMake: fix CMake 4.0 warning when minimum required version is < 3.10. * CMake: Add build option tiff-static (fixes :issue:`709`) Library changes --------------- New/improved functionalities: * Add TIFFOpenOptionsSetWarnAboutUnknownTags() for explicit control about emitting warnings for unknown tags. No longer emit warnings about unknown tags by default * tif_predict.c: speed-up decompression in some cases. API/ABI breaks: * None Bug fixes: * tif_fax3: For fax group 3 data if no EOL is detected, reading is retried without synchronisation for EOLs. (fixes :issue:`54`) * Updating TIFFMergeFieldInfo() with read_count=write_count=0 for FIELD_IGNORE. Updating TIFFMergeFieldInfo() with read_count=write_count=0 for FIELD_IGNORE. Improving handling when field_name = NULL. (fixes :issue:`532`) * tiff.h: add COMPRESSION_JXL_DNG_1_7=52546 as used for JPEGXL compression in the DNG 1.7 specification * TIFFWriteDirectorySec: Increment string length for ASCII tags for codec tags defined with FIELD_xxx bits, as it is done for FIELD_CUSTOM tags. (fixes :issue:`648`) * Do not error out on a tag whose tag count value is zero, just issue a warning. Fix parsing a private tag 0x80a6 (fixes :issue:`647`) * TIFFDefaultTransferFunction(): give up beyond td_bitspersample = 24 (Fixes https://github.com/OSGeo/gdal/issues/10875) * tif_getimage.c: Remove unnecessary calls to TIFFRGBAImageOK() (fixes :issue:`175`) * Fix writing a Predictor=3 file with non-native endianness * _TIFFVSetField(): fix potential use of unallocated memory (out-of-bounds read / nullptr dereference) in case of out-of-memory situation when dealing with custom tags (fixes :issue:`663`) * tif_fax3.c: Error out for CCITT fax encoding if SamplesPerPixel is not equal 1 and PlanarConfiguration = Contiguous (fixes :issue:`26`) * tif_fax3.c: error out after a number of times end-of-line or unexpected bad code words have been reached. (fixes :issue:`670`) * Fix memory leak in TIFFSetupStrips() (fixes :issue:`665`) * tif_zip.c: Provide zlib allocation functions. Otherwise for zlib built with -DZ_SOLO inflating will fail. * Fix memory leak in _TIFFSetDefaultCompressionState. (fixes :issue:`676`) * tif_predict.c: Don’t overwrite input buffer of TIFFWriteScanline() if "prediction" is enabled. Use extra working buffer in PredictorEncodeRow(). (fixes :issue:`5`) * tif_getimage.c: update some integer overflow checks (fixes :issue:`79`) * tif_getimage.c: Fix buffer underflow crash for less raster rows at TIFFReadRGBAImageOriented() (fixes :issue:`704`) * TIFFReadRGBAImage(): several fixes to avoid buffer overflows. * Correct passing arguments to TIFFCvtIEEEFloatToNative() and TIFFCvtIEEEDoubleToNative() if HAVE_IEEEFP is not defined. (fixes :issue:`699`) * LZWDecode(): avoid nullptr dereference when trying to read again after EOI marker has been found with remaining output bytes (fixes :issue:`698`) * TIFFSetSubDirectory(): check _TIFFCheckDirNumberAndOffset() return. * TIFFUnlinkDirectory() and TIFFWriteDirectorySec(): clear tif_rawcp when clearing tif_rawdata (fixes :issue:`711`) * JPEGEncodeRaw(): error out if a previous scanline failed to be written, to avoid out-of-bounds access (fixes :issue:`714`) * tif_jpeg: Fix bug in JPEGDecodeRaw() if JPEG_LIB_MK1_OR_12BIT is defined for 8/12bit dual mode, introduced in libjpeg-turbo 2.2, which was actually released as 3.0. (fixes :issue:`717`) * add assert for TIFFReadCustomDirectory infoarray check. Other changes: * tif_jpeg.c: use JPEG_MAX_DIMENSION constant instead of hard-coded 65535 value * tif_lzw.c / tif_packbits.c: use NULL instead of 0. * Take into account PACKBITS_READ_ONLY, LZW_READ_ONLY, and LERC_READ_ONLY macros to disable compiling write-support for those codecs. * tif_lerc.c: add missing casts * Merge several functions implemented twice in different modules. (see :issue:`154`) * Remove get_field_type form TIFFField structure because it is not used anymore and rename other parameter to set_get_field_type * Silence some Coverity Scan warnigs and mark already dismissed ones. * References to codec libraries updated and missing codec compile defines (tiffconf.h) added. * Move mkg3states under libtiff/tools. (fixes :issue:`708`) * tiff_itrunc(): don't use rand() to please Coverity Scan. * tiffio.h: fix compilation with LOGLUV_PUBLIC=0 * LICENSE.md: Add BSD license for Lempel-Ziv & Welch compression (tif_lzw.c) (fixes :issue:`431`) Documentation ------------- * TIFFRGBAImage.rst note added for incorrect saving of images with TIFF orientation from 5 (LeftTop) to 8 (LeftBottom) in the raster. * TIFFRGBAImage.rst note added about un-associated alpha handling (fixes :issue:`67`) * Update "Defining New TIFF Tags" description. (fixes :issue:`642`) * Fix return type of TIFFReadEncodedTile() * Update the documentation to reflect deprecated typedefs. * TIFFWriteDirectory.rst: Clarify TIFFSetWriteOffset() only sets offset for image data and not for IFD data. * Update documentation on re-entrancy and thread safety. * Remove dead links to no more existing Awaresystems web-site. * Updating BigTIFF specification and some miscelaneous editions. * Replace some last links and remove last todos. * Added hints for correct allocation of TIFFYCbCrtoRGB structure and its associated buffers. (fixes :issue:`681`) * Added chapter to "Using the TIFF Library" with links to handling multi-page TIFF and custom directories. (fixes :issue:`43`) * update TIFFOpen.rst with the return values of mapproc and unmapproc. (fixes :issue:`12`) Tools changes ------------- New/improved functionality: * tiffinfo: add a -W switch to warn about unknown tags. * tiffdither: process all pages in input TIFF file. Bug fixes: * ppm2tiff: Fix bug in `pack_words` trailing bytes, where last two bytes of each line were written wrongly. (fixes :issue:`467`) * fax2ps: fix regression of commit 28c38d648b64a66c3218778c4745225fe3e3a06d where TIFFTAG_FAXFILLFUNC is being used rather than an output buffer (fixes :issue:`649`) * tiff2pdf: Check TIFFTAG_TILELENGTH and TIFFTAGTILEWIDTH (fixes :issue:`650`) * tiff2pdf: check h_samp and v_samp for range 1 to 4 to avoid division by zero. (fixes :issue:`654`) * tiff2pdf: avoid null pointer dereference. (fixes :issue:`741`) * Improve non-secure integer overflow check (comparison of division result with multiplicant) at compiler optimisation in tiffcp, rgb2ycbcr and tiff2rgba. (fixes :issue:`546`) * tiff2rgba: fix some "a partial expression can generate an overflow before it is assigned to a broader type" warnings. (fixes :issue:`682`) * tiffdither/tiffmedian: Don't skip the first line of the input image. (fixes :issue:`703`) * tiffdither: avoid out-of-bounds read identified in :issue:`733` * tiffmedian: error out if TIFFReadScanline() fails (fixes :issue:`707`) * tiffmedian: close input file. (fixes :issue:`735`) * thumbail: avoid potential out of bounds access (fixes :issue:`715`) * tiffcrop: close open TIFF files and release allocated buffers before exiting in case of error to avoid memory leaks. (fixes :issue:`716`) * tiffcrop: fix double-free and memory leak exposed by :issue:`721` * tiffcrop: avoid buffer overflow. (fixes :issue:`740`) * tiffcrop: avoid nullptr dereference. (fixes :issue:`734`) * tiffdump: Fix coverity scan issue CID 1373365: Passing tainted expression \*datamem to PrintData, which uses it as a divisor or modulus. * tiff2ps: check return of TIFFGetFiled() for TIFFTAG_STRIPBYTECOUNTS and TIFFTAG_TILEBYTECOUNTS to avoid NULL pointer dereference. (fixes :issue:`718`) * tiffcmp: fix memory leak when second file cannot be opened. (fixes :issue:`718` and :issue:`729`) * tiffcp: fix setting compression level for lossless codecs. (fixes :issue:`730`) * raw2tiff: close input file before exit (fixes :issue:`742`) Changes to contributed and unsupported tools -------------------------------------------- * addtiffo: Fixing MSVC compiler warnings * Improved oss-fuzz fuzzer tiff_read_rgba_fuzzer.cc. * oss-fuzz: fix memory leak in fuzz target.