Changes in TIFF v4.4.0

References

Current Version

v4.4.0 (tag v4.4.0)

Previous Version

v4.3.0

Master Download Site

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

Master HTTP Site #1

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

Master HTTP Site #2

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

Master HTTP Site #3

http://libtiff.maptools.org/

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

  • Handle absolute paths in pkg-config file (issue #333)

  • Correct fix for the pkgconf file relative paths.

  • cmake: allow running the tests with a read-only source directory.

  • cmake: Fix STRIPCHOP_DEFAULT value in CMake builds.

  • build: Fix static library imports in mingw related to LERC

  • Fix version in libtiff-4.pc.in, and CMake build: Add requirements to pc file

  • cmake: Fix build with CMake 3.10.

  • cmake: Export tiff targets.

  • Make LERC_SUPPORT conditional on ZLIB_SUPPORT

Library changes

New/improved functionalities:

  • TIFFIsBigTiff() function added.

  • Functions TIFFFieldSetGetSize() and TIFFieldSetGetCountSize() added.

  • LZWDecode(): major speed improvements (~30% faster)

  • Predictor 2 (horizontal differenciation): support 64-bit

  • Support libjpeg 9d

Bug fixes:

  • Remove incorrect assert (issue #329)

  • avoid hang in TIFFRewriteDirectory() if a classic file > 4 GB is attempted to be created

  • tif_jbig.c: fix crash when reading a file with multiple IFD in memory-mapped mode and when bit reversal is needed (fixes issue #385)

  • TIFFFetchNormalTag(): avoid calling memcpy() with a null source pointer and size of zero (fixes issue #383)

  • TIFFWriteDirectoryTagData(): turn assertion on data length into a runtime check

  • TIFFFetchStripThing(): avoid calling memcpy() with a null source pointer and size of zero (fixes issue #362)

  • TIFFReadDirectory(): avoid calling memcpy() with a null source pointer and size of zero (fixes issue #362)

  • TIFFYCbCrToRGBInit(): avoid Integer-overflow

  • TIFFGetField(TIFFTAG_STRIPBYTECOUNTS/TIFFTAG_STRIPOFFSETS): return error if returned pointer is NULL (fixes issue #342)

  • OJPEG: avoid assertion when using TIFFReadScanline() (fixes issue #337)

  • TIFFReadDirectory(): fix OJPEG hack (fixes issue #319)

  • LZW codec: fix support for strips/tiles > 2 GB on Windows

  • TIFFAppendToStrip(): fix rewrite-in-place logic (fixes issue #309)

  • Fix TIFFRewriteDirectory() discarding directories.

  • TIFFReadCustomDirectory(): avoid crash when reading SubjectDistance tag on a non EXIF directory (issue #316)

  • Fix Segmentation fault printing GPS directory if Altitude tag is present

  • tif_jpeg.c: do not emit progressive scans with mozjpeg. (issue #266)

  • _TIFFRewriteField(): fix when writing a IFD with a single tile that is a sparse one, on big endian hosts

  • Fix all remaining uses of legacy Deflate compression id and warn on use.

Tools changes

Bug fixes:

  • tiffcrop: Fix issue issue #330 and some more from 320 to 349.

  • tiffcrop: fix issue issue #395: generation of strange section images.

  • tiffcrop: fix issue issue #380 and issue #382 heap buffer overflow in extractImageSection

  • tiffcrop: fix FPE (issue #393)

  • tiffcrop: buffsize check formula in loadImage() amended (fixes issue #273, issue #275)

  • tiffcrop.c: Fix issue issue #352 heap-buffer-overflow by correcting uint32_t underflow.

  • tiff2pdf: handle 8-bit palette colormap.

  • tiffcp: avoid buffer overflow in "mode" string (fixes issue #400)

  • tiffcp: Fix incomprehensible setting of orientation tag (fixes issue #29)

  • tiffcp: do not try to fetch compressor-specific tags when not appropriate (fixes issue #396)

  • tiffcp: fix heap buffer overflow (issue #278)

  • tiff2ps: In limitMalloc() check for negative size (fixes issue #284)

  • tiffinfo: add a -M switch to define the maximum heap allocation, and default it to 256 MiB (fixes issue #287, issue #290)

  • tiffinfo: limit more memory allocations using -M switch (fixes issue #288)

  • tiffset: fix global-buffer-overflow for ASCII tags where count is required (fixes issue #355)

  • raw2tiff: check that band number if not zero to avoid floating point exception(fixes issue #338)

  • tiffinfo/tiffdump: improve output for GDAL tags.

Contributed software changes

None