Changes in TIFF v4.7.0¶
Current Version |
v4.7.0 (tag v4.7.0) |
Previous Version |
|
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 ChangeLog
file
included in the release package and by the Git commit history.
Major changes¶
This version restores in the default build the availability of the tools that had been dropped in v4.6.0 (cf RFC 2: Restoring Needed LibTIFF Tools)
Software configuration changes¶
autoconf build: configure.ac: avoid -Werror passed to CFLAGS to interfere with feature detection
autoconf build: fix error when running make clean (fixes issue #630)
autoconf build: back off the minimum required automake version to 1.11
autoconf.ac: fix detection of windows.h for mingw (fixes issue #605)
libtiff-4.pc: Fix Requires.private missing Lerc. It provides a .pc file starting from version 4 (in autoconf builds, we assume that liblerc is at least version 4)
CMake: Fix TIFF_INCLUDE_DIRS
CMake: MinGW compilers don't need a .def file for shared library
CMake: move libdeflate and Lerc to Requires.private
CMake: enable resource compilation on all Windows.
Library changes¶
New/improved functionalities:
Add
TIFFOpenOptionsSetMaxCumulatedMemAlloc()
. This function complementsTIFFOpenOptionsSetMaxSingleMemAlloc()
to define the maximum cumulated memory allocations in byte, for a given TIFF handle, that libtiff internal memory allocation functions are allowed.
API/ABI breaks:
None
Bug fixes:
TIFFWriteDirectory(): Avoid overwriting following data if an IFD is enlarged.
TIFFXYZToRGB: avoid integer overflow (fixes issue #644)
uv_decode() and uv_encode(): avoid potential out-of-bounds array index (fixes issue #645)
Fix cases where tif_curdir is set incorrectly. Fix cases where the current directory number (tif_curdir) is set inconsistently or incorrectly, depending on the previous history.
TIFFRead[Scanline/EncodedStrip/EncodeTile]: 0-initialize output buffer if setupdecode fails ; most codecs: zero-initialize (not-yet-written parts of) output buffer if failure (fixes issue #375)
OJPEG: reset subsampling_convert_state=0 in OJPEGPreDecode (fixes issue #183)
ThunderRLE: fix failure when decoding last run. Bug seen with GhostPDL
LERC codec: deal with issues with multi-band PlanarConfig=Contig and NaN values
tif_fax3.c: error out after a number of times end-of-file has been reached (fixes issue #583)
LZW: avoid warning about misaligned address with UBSAN (fixes issue #616)
TIFFReadRGBAStrip/TIFFReadRGBATile: add more validation of col/row (fixes issue #622, CVE-2023-52356)
tif_dirread.c: only issue TIFFGetFileSize() for large enough RAM requests
Avoid FPEs (division by zero) in tif_getimage.c.
Avoiding FPE (division by zero) for TIFFhowmany_32() and TIFFhowmany_64() macros by checking for denominator not zero before macros are executed. (fixes issue #628)
Add non-zero check before division in TIFFComputeStrip()
Fix wrong return of TIFFIsBigTIFF() in case byte-swapping is active
Setting the TIFFFieldInfo field set_field_type should consider field_writecount not field_readcount
Avoid memory leaks when using TIFFCreateDirectory() by releasing the allocated memory in the tif-structure.
For non-terminated ASCII arrays, the buffer is first enlarged before a NULL is set at the end to avoid deleting the last character. (fixes issue #579)
Check return value of _TIFFCreateAnonField(). (fixes issue #624, CVE-2024-7006)
Prevent some out-of-memory attacks (https://gitlab.com/libtiff/libtiff/-/issues/614#note_1602683857)
Ensure absolute seeking is forced independent of TIFFReadDirectory success. (fixes issue #618)
tif_dirinfo.c: re-enable TIFFTAG_EP_CFAREPEATPATTERNDIM and TIFFTAG_EP_CFAPATTERN tags (fixes issue #608)
Other changes:
Fix warnings with GCC 14
tif_dir.c: Log source file, line number, and input tif for directory count error (fixes issue #627)
Last usage of get_field_type of TIFFField structure at TIFFWriteDirectorySec() changed to using set_field_type.
tif_jpeg.c/tif_ojpeg.c: remove likely ifdef tricks related to old compilers or unusual setups
Remove _TIFFUInt64ToFloat() and _TIFFUInt64ToDouble()
Remove support for _MSC_VER < 1500.
Use #ifdef _WIN32 to test for Windows, and tiffio.h: remove definition of __WIN32__
Documentation¶
Amend manpages for changes in current directory index behaviour
Note on using TIFFFlush() before TIFFClose() to check that the data has been successfully written to the file. (fixes issue #506)
Update TIFF documentation about TIFFOpenOptions.rst and TIFFOpenOptionsSetMaxSingleMemAlloc() usage and some other small fixes (relates to CVE-2024-7006)
Tools changes¶
Re-added tools:
fax2ps
fax2tiff
pal2rgb
ppm2tiff
raw2tiff
rgb2ycbcr (not installed)
thumbnail (not installed)
tiff2bw
tiff2rgba
tiffcmp
tiffcrop
tiffdither
tiffgt
tiffmedian
tiff2ps
tiff2pdf
New/improved functionality:
tiff2rgba: Add background gradient option for alpha compositing
tiffcp: -i flag restored
Bug fixes:
tiffcrop: address Coverity scan issues 1605444, 1605445, and 16054
tiffcrop: Apply "Fix heap-buffer-overflow in function extractImageSection"
tiffcrop: fix buffer overflows, use after free (fixes issue #542, issue #550, issue #552)
tiff2pdf: address Coverity scan issues
tiff2pdf: fix inconsistent PLANARCONFIG value for the input and output TIFF
tiff2pdf: fix issue with JPEG restart-interval marker when converting from JPEG-compressed files (fixes issue #539)
tiff2pdf: red and blue were being swapped for RGBA decoding (fixes issue #253)
tiff2pdf: fixes issue #596
thumbnail: address Coverity scan issues
tiffcp: Add check for limitMalloc return to fix Coverity 1603334
tiffcp: preserve TIFFTAG_REFERENCEBLACKWHITE when doing YCbCr JPEG -> YCbCr JPEG
tiffcp: replace PHOTOMETRIC_YCBCR with PHOTOMETRIC_RGB when outputing to compression != JPEG (refs issue #571)
tiffcp: do not copy tags YCBCRCOEFFICIENTS, YCBCRSUBSAMPLING, YCBCRPOSITIONING, REFERENCEBLACKWHITE. Only set YCBCRSUBSAMPLING when generating YCbCr JPEG
tiffcp: Check also codec of input image, not only from output image (fixes issue #606)
Add some basic sanity checks for tiffcp and tiffcrop RGB->YCbCr JPEG conversions.
fax2ps and fax2tiff: memory leak fixes (fixes issue #476)
tiffmedian: memory leak fixes (fixes issue #599)
fax2tiff: fix EOFB interpretation (fixes issue #191)
fax2tiff: fix issue with unreasonable width input (fixes issue #249)
tiffcp and tiffcrop: fixes issue #228
tiff2rgba: fixes issue #469
tiffdither: fixes issue #473
tiffdump: fix wrong printf formatter in error message (Coverity 1472932)
tiffset: avoid false positive Coverity Scan warning on 64-bit builds (Coverity 1518997)
tifcp/tiffset: use correct format specifiers
Changes to contributed and unsupported tools¶
contrib/addtiffo: validate return of TIFFWriteEncodedXXXX() calls (Coverity 1024680)