Changes in TIFF v4.7.1

References

Current Version

v4.7.1 (tag v4.7.1)

Previous Version

v4.7.0

Primary Download Site

https://download.osgeo.org/libtiff/

Home HTTP Site #1

http://www.simplesystems.org/libtiff/

Home HTTP Site #2

https://libtiff.gitlab.io/libtiff/

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 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.