Changes in TIFF v4.7.1¶
Current Version |
v4.7.1 (tag v4.7.1) |
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¶
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.