graphics/tiff: update to 4.5.0.

see https://libtiff.gitlab.io/libtiff/releases/v4.5.0.html
- bump major, libs now uses a symbol map cf
  https://gitlab.com/libtiff/libtiff/-/merge_requests/361
- some private symbols were used by comms/hylafax, which will be fixed in a few.
- drop patch-Makefile_in, use --disable-contrib instead (prompted by naddy@)
- disable sphinx, install provided built doc
- enable debug packages (prompted by naddy@)
- switch to an https homepage (prompted by rsadowski@)
- drop str* patches, some were merged upstream in
  72e90d07fb,
others are pointless (discussed with sthen@)

a switch to cmake might happen later.

tested in a bulk build by ajacoutot@, thanks !
This commit is contained in:
landry 2022-12-19 08:50:38 +00:00
parent dbfe8c612b
commit f7d5bb5879
15 changed files with 400 additions and 732 deletions

View File

@ -1,15 +1,14 @@
COMMENT= tools and library routines for working with TIFF images
DISTNAME= tiff-4.4.0
REVISION= 2
SHARED_LIBS= tiff 41.1 # 13.0
SHARED_LIBS+= tiffxx 41.0 # 13.0
DISTNAME= tiff-4.5.0
SHARED_LIBS= tiff 42.0 # 13.0
SHARED_LIBS+= tiffxx 42.0 # 13.0
CATEGORIES= graphics
MASTER_SITES= https://download.osgeo.org/libtiff/
EXTRACT_SUFX= .tar.xz
HOMEPAGE= http://www.simplesystems.org/libtiff/
HOMEPAGE= https://libtiff.gitlab.io/libtiff/
LIB_DEPENDS= graphics/jpeg \
archivers/xz \
@ -17,6 +16,7 @@ LIB_DEPENDS= graphics/jpeg \
WANTLIB= c ${COMPILER_LIBCXX} jpeg lzma m z zstd
COMPILER = base-clang ports-gcc base-gcc
DEBUG_PACKAGES =${BUILD_PACKAGES}
# BSD
PERMIT_PACKAGE= Yes
@ -25,6 +25,8 @@ CONFIGURE_STYLE=gnu
CONFIGURE_ARGS= --disable-jbig \
--disable-libdeflate \
--disable-webp \
--disable-sphinx \
--disable-contrib \
--with-docdir="${PREFIX}/share/doc/tiff" \
--with-jpeg-include-dir="${LOCALBASE}/include" \
--with-jpeg-lib-dir="${LOCALBASE}/lib" \
@ -32,7 +34,4 @@ CONFIGURE_ARGS= --disable-jbig \
SEPARATE_BUILD= Yes
MODGNU_CONFIG_GUESS_DIRS=${WRKSRC}/config
post-install:
cd ${PREFIX}/share/doc/tiff && mv html/* . && rmdir html
.include <bsd.port.mk>

View File

@ -1,2 +1,2 @@
SHA256 (tiff-4.4.0.tar.xz) = STB7UQBIzMe8QPLLpuhDkYL+bmVAV8GhaDE5vy7LHcE=
SIZE (tiff-4.4.0.tar.xz) = 1929292
SHA256 (tiff-4.5.0.tar.xz) = 2vrJecXntsZQAlVpxaTnIJlbpfF7wX5idtHxJCe+Jnw=
SIZE (tiff-4.5.0.tar.xz) = 2320900

View File

@ -1,12 +0,0 @@
Index: Makefile.in
--- Makefile.in.orig
+++ Makefile.in
@@ -436,7 +436,7 @@ EXTRA_DIST = \
libtiff-4.pc.in
dist_doc_DATA = $(docfiles)
-SUBDIRS = port libtiff tools build contrib test man html
+SUBDIRS = port libtiff tools build test man html
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = libtiff-4.pc

View File

@ -1,9 +1,7 @@
Replace .3tiff man page suffix with standard .3
Index: man/Makefile.in
--- man/Makefile.in.orig
+++ man/Makefile.in
@@ -500,7 +500,7 @@ install-man3: $(dist_man3_MANS)
Index: doc/Makefile.in
--- doc/Makefile.in.orig
+++ doc/Makefile.in
@@ -609,7 +609,7 @@ install-man3: $(man3_MANS)
if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
echo "$$d$$p"; echo "$$p"; \
done | \

View File

@ -1,26 +0,0 @@
From dd1bcc7abb26094e93636e85520f0d8f81ab0fab Mon Sep 17 00:00:00 2001
From: 4ugustus <wangdw.augustus@qq.com>
Date: Sat, 11 Jun 2022 09:31:43 +0000
Subject: [PATCH] fix the FPE in tiffcrop (#415, #427, and #428)
CVE-2022-2056 / CVE-2022-2057 / CVE-2022-2058
Index: libtiff/tif_aux.c
--- libtiff/tif_aux.c.orig
+++ libtiff/tif_aux.c
@@ -402,6 +402,15 @@ float _TIFFClampDoubleToFloat( double val )
return (float)val;
}
+uint32_t _TIFFClampDoubleToUInt32(double val)
+{
+ if( val < 0 )
+ return 0;
+ if( val > 0xFFFFFFFFU || val != val )
+ return 0xFFFFFFFFU;
+ return (uint32_t)val;
+}
+
int _TIFFSeekOK(TIFF* tif, toff_t off)
{
/* Huge offsets, especially -1 / UINT64_MAX, can cause issues */

View File

@ -1,13 +0,0 @@
Index: libtiff/tif_codec.c
--- libtiff/tif_codec.c.orig
+++ libtiff/tif_codec.c
@@ -114,7 +114,8 @@ _notConfigured(TIFF* tif)
const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
char compression_code[20];
- sprintf(compression_code, "%"PRIu16, tif->tif_dir.td_compression );
+ snprintf(compression_code, sizeof(compression_code), "%d",
+ tif->tif_dir.td_compression );
TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
"%s compression support is not configured",
c ? c->name : compression_code );

View File

@ -1,21 +0,0 @@
Index: libtiff/tif_compress.c
--- libtiff/tif_compress.c.orig
+++ libtiff/tif_compress.c
@@ -199,14 +199,15 @@ TIFFFindCODEC(uint16_t scheme)
TIFFCodec*
TIFFRegisterCODEC(uint16_t scheme, const char* name, TIFFInitMethod init)
{
+ size_t namelen = strlen(name);
codec_t* cd = (codec_t*)
- _TIFFmalloc((tmsize_t)(sizeof (codec_t) + sizeof (TIFFCodec) + strlen(name)+1));
+ _TIFFmalloc((tmsize_t)(sizeof (codec_t) + sizeof (TIFFCodec) + namelen+1));
if (cd != NULL) {
cd->info = (TIFFCodec*) ((uint8_t*) cd + sizeof (codec_t));
cd->info->name = (char*)
((uint8_t*) cd->info + sizeof (TIFFCodec));
- strcpy(cd->info->name, name);
+ strlcpy(cd->info->name, name, namelen+1);
cd->info->scheme = scheme;
cd->info->init = init;
cd->next = registeredCODECS;

View File

@ -1,23 +0,0 @@
From 275735d0354e39c0ac1dc3c0db2120d6f31d1990 Mon Sep 17 00:00:00 2001
From: Even Rouault <even.rouault@spatialys.com>
Date: Mon, 27 Jun 2022 16:09:43 +0200
Subject: [PATCH] _TIFFCheckFieldIsValidForCodec(): return FALSE when passed a
codec-specific tag and the codec is not configured (fixes #433)
This avoids crashes when querying such tags
CVE-2022-34526
Index: libtiff/tif_dirinfo.c
--- libtiff/tif_dirinfo.c.orig
+++ libtiff/tif_dirinfo.c
@@ -1191,6 +1191,9 @@ _TIFFCheckFieldIsValidForCodec(TIFF *tif, ttag_t tag)
default:
return 1;
}
+ if( !TIFFIsCODECConfigured(tif->tif_dir.td_compression) ) {
+ return 0;
+ }
/* Check if codec specific tags are allowed for the current
* compression scheme (codec) */
switch (tif->tif_dir.td_compression) {

View File

@ -1,23 +0,0 @@
Index: libtiff/tif_extension.c
--- libtiff/tif_extension.c.orig
+++ libtiff/tif_extension.c
@@ -79,6 +79,7 @@ void TIFFSetClientInfo( TIFF *tif, void *data, const c
{
TIFFClientInfoLink *psLink = tif->tif_clientinfo;
+ size_t namelen = strlen(name);
/*
** Do we have an existing link with this name? If so, just
@@ -100,9 +101,9 @@ void TIFFSetClientInfo( TIFF *tif, void *data, const c
psLink = (TIFFClientInfoLink *) _TIFFmalloc(sizeof(TIFFClientInfoLink));
assert (psLink != NULL);
psLink->next = tif->tif_clientinfo;
- psLink->name = (char *) _TIFFmalloc((tmsize_t)(strlen(name)+1));
+ psLink->name = (char *) _TIFFmalloc((tmsize_t)(namelen+1));
assert (psLink->name != NULL);
- strcpy(psLink->name, name);
+ strlcpy(psLink->name, name, namelen+1);
psLink->data = data;
tif->tif_clientinfo = psLink;

View File

@ -1,261 +0,0 @@
This one is slightly problematic. If an application allocates less
room for its error buffer than the recommended 1024, the error message
buffer will still overflow.
TIFFReadRGBATileExt(): fix (unsigned) integer overflow on strips/tiles > 2 GB
Index: libtiff/tif_getimage.c
--- libtiff/tif_getimage.c.orig
+++ libtiff/tif_getimage.c
@@ -79,7 +79,7 @@ TIFFRGBAImageOK(TIFF* tif, char emsg[1024])
int colorchannels;
if (!tif->tif_decodestatus) {
- sprintf(emsg, "Sorry, requested compression method is not configured");
+ snprintf(emsg, 1024, "Sorry, requested compression method is not configured");
return (0);
}
switch (td->td_bitspersample) {
@@ -90,12 +90,12 @@ TIFFRGBAImageOK(TIFF* tif, char emsg[1024])
case 16:
break;
default:
- sprintf(emsg, "Sorry, can not handle images with %"PRIu16"-bit samples",
+ snprintf(emsg, 1024, "Sorry, can not handle images with %"PRIu16"-bit samples",
td->td_bitspersample);
return (0);
}
if (td->td_sampleformat == SAMPLEFORMAT_IEEEFP) {
- sprintf(emsg, "Sorry, can not handle images with IEEE floating-point samples");
+ snprintf(emsg, 1024, "Sorry, can not handle images with IEEE floating-point samples");
return (0);
}
colorchannels = td->td_samplesperpixel - td->td_extrasamples;
@@ -108,7 +108,7 @@ TIFFRGBAImageOK(TIFF* tif, char emsg[1024])
photometric = PHOTOMETRIC_RGB;
break;
default:
- sprintf(emsg, "Missing needed %s tag", photoTag);
+ snprintf(emsg, 1024, "Missing needed %s tag", photoTag);
return (0);
}
}
@@ -119,7 +119,7 @@ TIFFRGBAImageOK(TIFF* tif, char emsg[1024])
if (td->td_planarconfig == PLANARCONFIG_CONTIG
&& td->td_samplesperpixel != 1
&& td->td_bitspersample < 8 ) {
- sprintf(emsg,
+ snprintf(emsg, 1024,
"Sorry, can not handle contiguous data with %s=%"PRIu16", "
"and %s=%"PRIu16" and Bits/Sample=%"PRIu16"",
photoTag, photometric,
@@ -143,7 +143,7 @@ TIFFRGBAImageOK(TIFF* tif, char emsg[1024])
break;
case PHOTOMETRIC_RGB:
if (colorchannels < 3) {
- sprintf(emsg, "Sorry, can not handle RGB image with %s=%d",
+ snprintf(emsg, 1024, "Sorry, can not handle RGB image with %s=%d",
"Color channels", colorchannels);
return (0);
}
@@ -153,13 +153,13 @@ TIFFRGBAImageOK(TIFF* tif, char emsg[1024])
uint16_t inkset;
TIFFGetFieldDefaulted(tif, TIFFTAG_INKSET, &inkset);
if (inkset != INKSET_CMYK) {
- sprintf(emsg,
+ snprintf(emsg, 1024,
"Sorry, can not handle separated image with %s=%d",
"InkSet", inkset);
return 0;
}
if (td->td_samplesperpixel < 4) {
- sprintf(emsg,
+ snprintf(emsg, 1024,
"Sorry, can not handle separated image with %s=%"PRIu16,
"Samples/pixel", td->td_samplesperpixel);
return 0;
@@ -168,7 +168,7 @@ TIFFRGBAImageOK(TIFF* tif, char emsg[1024])
}
case PHOTOMETRIC_LOGL:
if (td->td_compression != COMPRESSION_SGILOG) {
- sprintf(emsg, "Sorry, LogL data must have %s=%d",
+ snprintf(emsg, 1024, "Sorry, LogL data must have %s=%d",
"Compression", COMPRESSION_SGILOG);
return (0);
}
@@ -176,17 +176,17 @@ TIFFRGBAImageOK(TIFF* tif, char emsg[1024])
case PHOTOMETRIC_LOGLUV:
if (td->td_compression != COMPRESSION_SGILOG &&
td->td_compression != COMPRESSION_SGILOG24) {
- sprintf(emsg, "Sorry, LogLuv data must have %s=%d or %d",
+ snprintf(emsg, 1024, "Sorry, LogLuv data must have %s=%d or %d",
"Compression", COMPRESSION_SGILOG, COMPRESSION_SGILOG24);
return (0);
}
if (td->td_planarconfig != PLANARCONFIG_CONTIG) {
- sprintf(emsg, "Sorry, can not handle LogLuv images with %s=%"PRIu16,
+ snprintf(emsg, 1024, "Sorry, can not handle LogLuv images with %s=%"PRIu16,
"Planarconfiguration", td->td_planarconfig);
return (0);
}
if ( td->td_samplesperpixel != 3 || colorchannels != 3 ) {
- sprintf(emsg,
+ snprintf(emsg, 1024,
"Sorry, can not handle image with %s=%"PRIu16", %s=%d",
"Samples/pixel", td->td_samplesperpixel,
"colorchannels", colorchannels);
@@ -195,7 +195,7 @@ TIFFRGBAImageOK(TIFF* tif, char emsg[1024])
break;
case PHOTOMETRIC_CIELAB:
if ( td->td_samplesperpixel != 3 || colorchannels != 3 || td->td_bitspersample != 8 ) {
- sprintf(emsg,
+ snprintf(emsg, 1024,
"Sorry, can not handle image with %s=%"PRIu16", %s=%d and %s=%"PRIu16,
"Samples/pixel", td->td_samplesperpixel,
"colorchannels", colorchannels,
@@ -204,7 +204,7 @@ TIFFRGBAImageOK(TIFF* tif, char emsg[1024])
}
break;
default:
- sprintf(emsg, "Sorry, can not handle image with %s=%"PRIu16,
+ snprintf(emsg, 1024, "Sorry, can not handle image with %s=%"PRIu16,
photoTag, photometric);
return (0);
}
@@ -302,7 +302,7 @@ TIFFRGBAImageBegin(TIFFRGBAImage* img, TIFF* tif, int
case 16:
break;
default:
- sprintf(emsg, "Sorry, can not handle images with %"PRIu16"-bit samples",
+ snprintf(emsg, 1024, "Sorry, can not handle images with %"PRIu16"-bit samples",
img->bitspersample);
goto fail_return;
}
@@ -352,7 +352,7 @@ TIFFRGBAImageBegin(TIFFRGBAImage* img, TIFF* tif, int
img->photometric = PHOTOMETRIC_RGB;
break;
default:
- sprintf(emsg, "Missing needed %s tag", photoTag);
+ snprintf(emsg, 1024, "Missing needed %s tag", photoTag);
goto fail_return;
}
}
@@ -360,7 +360,7 @@ TIFFRGBAImageBegin(TIFFRGBAImage* img, TIFF* tif, int
case PHOTOMETRIC_PALETTE:
if (!TIFFGetField(tif, TIFFTAG_COLORMAP,
&red_orig, &green_orig, &blue_orig)) {
- sprintf(emsg, "Missing required \"Colormap\" tag");
+ snprintf(emsg, 1024, "Missing required \"Colormap\" tag");
goto fail_return;
}
@@ -370,7 +370,7 @@ TIFFRGBAImageBegin(TIFFRGBAImage* img, TIFF* tif, int
img->greencmap = (uint16_t *) _TIFFmalloc(sizeof(uint16_t) * n_color);
img->bluecmap = (uint16_t *) _TIFFmalloc(sizeof(uint16_t) * n_color);
if( !img->redcmap || !img->greencmap || !img->bluecmap ) {
- sprintf(emsg, "Out of memory for colormap copy");
+ snprintf(emsg, 1024, "Out of memory for colormap copy");
goto fail_return;
}
@@ -384,7 +384,7 @@ TIFFRGBAImageBegin(TIFFRGBAImage* img, TIFF* tif, int
if (planarconfig == PLANARCONFIG_CONTIG
&& img->samplesperpixel != 1
&& img->bitspersample < 8 ) {
- sprintf(emsg,
+ snprintf(emsg, 1024,
"Sorry, can not handle contiguous data with %s=%"PRIu16", "
"and %s=%"PRIu16" and Bits/Sample=%"PRIu16,
photoTag, img->photometric,
@@ -421,7 +421,7 @@ TIFFRGBAImageBegin(TIFFRGBAImage* img, TIFF* tif, int
break;
case PHOTOMETRIC_RGB:
if (colorchannels < 3) {
- sprintf(emsg, "Sorry, can not handle RGB image with %s=%d",
+ snprintf(emsg, 1024, "Sorry, can not handle RGB image with %s=%d",
"Color channels", colorchannels);
goto fail_return;
}
@@ -431,12 +431,12 @@ TIFFRGBAImageBegin(TIFFRGBAImage* img, TIFF* tif, int
uint16_t inkset;
TIFFGetFieldDefaulted(tif, TIFFTAG_INKSET, &inkset);
if (inkset != INKSET_CMYK) {
- sprintf(emsg, "Sorry, can not handle separated image with %s=%"PRIu16,
+ snprintf(emsg, 1024, "Sorry, can not handle separated image with %s=%"PRIu16,
"InkSet", inkset);
goto fail_return;
}
if (img->samplesperpixel < 4) {
- sprintf(emsg, "Sorry, can not handle separated image with %s=%"PRIu16,
+ snprintf(emsg, 1024, "Sorry, can not handle separated image with %s=%"PRIu16,
"Samples/pixel", img->samplesperpixel);
goto fail_return;
}
@@ -444,7 +444,7 @@ TIFFRGBAImageBegin(TIFFRGBAImage* img, TIFF* tif, int
break;
case PHOTOMETRIC_LOGL:
if (compress != COMPRESSION_SGILOG) {
- sprintf(emsg, "Sorry, LogL data must have %s=%d",
+ snprintf(emsg, 1024, "Sorry, LogL data must have %s=%d",
"Compression", COMPRESSION_SGILOG);
goto fail_return;
}
@@ -454,12 +454,12 @@ TIFFRGBAImageBegin(TIFFRGBAImage* img, TIFF* tif, int
break;
case PHOTOMETRIC_LOGLUV:
if (compress != COMPRESSION_SGILOG && compress != COMPRESSION_SGILOG24) {
- sprintf(emsg, "Sorry, LogLuv data must have %s=%d or %d",
+ snprintf(emsg, 1024, "Sorry, LogLuv data must have %s=%d or %d",
"Compression", COMPRESSION_SGILOG, COMPRESSION_SGILOG24);
goto fail_return;
}
if (planarconfig != PLANARCONFIG_CONTIG) {
- sprintf(emsg, "Sorry, can not handle LogLuv images with %s=%"PRIu16,
+ snprintf(emsg, 1024, "Sorry, can not handle LogLuv images with %s=%"PRIu16,
"Planarconfiguration", planarconfig);
return (0);
}
@@ -470,7 +470,7 @@ TIFFRGBAImageBegin(TIFFRGBAImage* img, TIFF* tif, int
case PHOTOMETRIC_CIELAB:
break;
default:
- sprintf(emsg, "Sorry, can not handle image with %s=%"PRIu16,
+ snprintf(emsg, 1024, "Sorry, can not handle image with %s=%"PRIu16,
photoTag, img->photometric);
goto fail_return;
}
@@ -481,12 +481,12 @@ TIFFRGBAImageBegin(TIFFRGBAImage* img, TIFF* tif, int
!(planarconfig == PLANARCONFIG_SEPARATE && img->samplesperpixel > 1);
if (img->isContig) {
if (!PickContigCase(img)) {
- sprintf(emsg, "Sorry, can not handle image");
+ snprintf(emsg, 1024, "Sorry, can not handle image");
goto fail_return;
}
} else {
if (!PickSeparateCase(img)) {
- sprintf(emsg, "Sorry, can not handle image");
+ snprintf(emsg, 1024, "Sorry, can not handle image");
goto fail_return;
}
}
@@ -3058,15 +3058,15 @@ TIFFReadRGBATileExt(TIFF* tif, uint32_t col, uint32_t
return( ok );
for( i_row = 0; i_row < read_ysize; i_row++ ) {
- memmove( raster + (tile_ysize - i_row - 1) * tile_xsize,
- raster + (read_ysize - i_row - 1) * read_xsize,
+ memmove( raster + (size_t)(tile_ysize - i_row - 1) * tile_xsize,
+ raster + (size_t)(read_ysize - i_row - 1) * read_xsize,
read_xsize * sizeof(uint32_t) );
- _TIFFmemset( raster + (tile_ysize - i_row - 1) * tile_xsize+read_xsize,
+ _TIFFmemset( raster + (size_t)(tile_ysize - i_row - 1) * tile_xsize+read_xsize,
0, sizeof(uint32_t) * (tile_xsize - read_xsize) );
}
for( i_row = read_ysize; i_row < tile_ysize; i_row++ ) {
- _TIFFmemset( raster + (tile_ysize - i_row - 1) * tile_xsize,
+ _TIFFmemset( raster + (size_t)(tile_ysize - i_row - 1) * tile_xsize,
0, sizeof(uint32_t) * tile_xsize );
}

View File

@ -1,12 +1,12 @@
Index: libtiff/tif_luv.c
--- libtiff/tif_luv.c.orig
+++ libtiff/tif_luv.c
@@ -733,7 +733,7 @@ static int tiff_itrunc(double x, int m)
@@ -776,7 +776,7 @@ static int tiff_itrunc(double x, int m)
return (int)x;
/* Silence CoverityScan warning about bad crypto function */
/* coverity[dont_call] */
- return (int)(x + rand()*(1./RAND_MAX) - .5);
+ return (int)(x + arc4random()*(1./UINT_MAX) - .5);
- return (int)(x + rand() * (1. / RAND_MAX) - .5);
+ return (int)(x + arc4random() * (1. / RAND_MAX) - .5);
}
#if !LOGLUV_PUBLIC

View File

@ -1,29 +0,0 @@
Index: libtiff/tif_open.c
--- libtiff/tif_open.c.orig
+++ libtiff/tif_open.c
@@ -84,6 +84,7 @@ TIFFClientOpen(
TIFF *tif;
int m;
const char* cp;
+ size_t namelen;
/* The following are configuration checks. They should be redundant, but should not
* compile to any actual code in an optimised release build anyway. If any of them
@@ -114,14 +115,15 @@ TIFFClientOpen(
m = _TIFFgetMode(mode, module);
if (m == -1)
goto bad2;
- tif = (TIFF *)_TIFFmalloc((tmsize_t)(sizeof (TIFF) + strlen(name) + 1));
+ namelen = strlen(name);
+ tif = (TIFF *)_TIFFmalloc((tmsize_t)(sizeof (TIFF) + namelen + 1));
if (tif == NULL) {
TIFFErrorExt(clientdata, module, "%s: Out of memory (TIFF structure)", name);
goto bad2;
}
_TIFFmemset(tif, 0, sizeof (*tif));
tif->tif_name = (char *)tif + sizeof (TIFF);
- strcpy(tif->tif_name, name);
+ strlcpy(tif->tif_name, name, namelen+1);
tif->tif_mode = m &~ (O_CREAT|O_TRUNC);
tif->tif_curdir = (uint16_t) -1; /* non-existent directory */
tif->tif_curoff = 0;

View File

@ -1,18 +0,0 @@
From dd1bcc7abb26094e93636e85520f0d8f81ab0fab Mon Sep 17 00:00:00 2001
From: 4ugustus <wangdw.augustus@qq.com>
Date: Sat, 11 Jun 2022 09:31:43 +0000
Subject: [PATCH] fix the FPE in tiffcrop (#415, #427, and #428)
CVE-2022-2056 / CVE-2022-2057 / CVE-2022-2058
Index: libtiff/tiffiop.h
--- libtiff/tiffiop.h.orig
+++ libtiff/tiffiop.h
@@ -365,6 +365,7 @@ extern double _TIFFUInt64ToDouble(uint64_t);
extern float _TIFFUInt64ToFloat(uint64_t);
extern float _TIFFClampDoubleToFloat(double);
+extern uint32_t _TIFFClampDoubleToUInt32(double);
extern tmsize_t
_TIFFReadEncodedStripAndAllocBuffer(TIFF* tif, uint32_t strip,

View File

@ -1,140 +0,0 @@
From dd1bcc7abb26094e93636e85520f0d8f81ab0fab Mon Sep 17 00:00:00 2001
From: 4ugustus <wangdw.augustus@qq.com>
Date: Sat, 11 Jun 2022 09:31:43 +0000
Subject: [PATCH] fix the FPE in tiffcrop (#415, #427, and #428)
CVE-2022-2056 / CVE-2022-2057 / CVE-2022-2058
Index: tools/tiffcrop.c
--- tools/tiffcrop.c.orig
+++ tools/tiffcrop.c
@@ -5268,17 +5268,17 @@ computeInputPixelOffsets(struct crop_mask *crop, struc
{
if ((crop->res_unit == RESUNIT_INCH) || (crop->res_unit == RESUNIT_CENTIMETER))
{
- x1 = (uint32_t) (crop->corners[i].X1 * scale * xres);
- x2 = (uint32_t) (crop->corners[i].X2 * scale * xres);
- y1 = (uint32_t) (crop->corners[i].Y1 * scale * yres);
- y2 = (uint32_t) (crop->corners[i].Y2 * scale * yres);
+ x1 = _TIFFClampDoubleToUInt32(crop->corners[i].X1 * scale * xres);
+ x2 = _TIFFClampDoubleToUInt32(crop->corners[i].X2 * scale * xres);
+ y1 = _TIFFClampDoubleToUInt32(crop->corners[i].Y1 * scale * yres);
+ y2 = _TIFFClampDoubleToUInt32(crop->corners[i].Y2 * scale * yres);
}
else
{
- x1 = (uint32_t) (crop->corners[i].X1);
- x2 = (uint32_t) (crop->corners[i].X2);
- y1 = (uint32_t) (crop->corners[i].Y1);
- y2 = (uint32_t) (crop->corners[i].Y2);
+ x1 = _TIFFClampDoubleToUInt32(crop->corners[i].X1);
+ x2 = _TIFFClampDoubleToUInt32(crop->corners[i].X2);
+ y1 = _TIFFClampDoubleToUInt32(crop->corners[i].Y1);
+ y2 = _TIFFClampDoubleToUInt32(crop->corners[i].Y2);
}
/* a) Region needs to be within image sizes 0.. width-1; 0..length-1
* b) Corners are expected to be submitted as top-left to bottom-right.
@@ -5357,17 +5357,17 @@ computeInputPixelOffsets(struct crop_mask *crop, struc
{
if (crop->res_unit != RESUNIT_INCH && crop->res_unit != RESUNIT_CENTIMETER)
{ /* User has specified pixels as reference unit */
- tmargin = (uint32_t)(crop->margins[0]);
- lmargin = (uint32_t)(crop->margins[1]);
- bmargin = (uint32_t)(crop->margins[2]);
- rmargin = (uint32_t)(crop->margins[3]);
+ tmargin = _TIFFClampDoubleToUInt32(crop->margins[0]);
+ lmargin = _TIFFClampDoubleToUInt32(crop->margins[1]);
+ bmargin = _TIFFClampDoubleToUInt32(crop->margins[2]);
+ rmargin = _TIFFClampDoubleToUInt32(crop->margins[3]);
}
else
{ /* inches or centimeters specified */
- tmargin = (uint32_t)(crop->margins[0] * scale * yres);
- lmargin = (uint32_t)(crop->margins[1] * scale * xres);
- bmargin = (uint32_t)(crop->margins[2] * scale * yres);
- rmargin = (uint32_t)(crop->margins[3] * scale * xres);
+ tmargin = _TIFFClampDoubleToUInt32(crop->margins[0] * scale * yres);
+ lmargin = _TIFFClampDoubleToUInt32(crop->margins[1] * scale * xres);
+ bmargin = _TIFFClampDoubleToUInt32(crop->margins[2] * scale * yres);
+ rmargin = _TIFFClampDoubleToUInt32(crop->margins[3] * scale * xres);
}
if ((lmargin + rmargin) > image->width)
@@ -5397,24 +5397,24 @@ computeInputPixelOffsets(struct crop_mask *crop, struc
if (crop->res_unit != RESUNIT_INCH && crop->res_unit != RESUNIT_CENTIMETER)
{
if (crop->crop_mode & CROP_WIDTH)
- width = (uint32_t)crop->width;
+ width = _TIFFClampDoubleToUInt32(crop->width);
else
width = image->width - lmargin - rmargin;
if (crop->crop_mode & CROP_LENGTH)
- length = (uint32_t)crop->length;
+ length = _TIFFClampDoubleToUInt32(crop->length);
else
length = image->length - tmargin - bmargin;
}
else
{
if (crop->crop_mode & CROP_WIDTH)
- width = (uint32_t)(crop->width * scale * image->xres);
+ width = _TIFFClampDoubleToUInt32(crop->width * scale * image->xres);
else
width = image->width - lmargin - rmargin;
if (crop->crop_mode & CROP_LENGTH)
- length = (uint32_t)(crop->length * scale * image->yres);
+ length = _TIFFClampDoubleToUInt32(crop->length * scale * image->yres);
else
length = image->length - tmargin - bmargin;
}
@@ -5868,13 +5868,13 @@ computeOutputPixelOffsets (struct crop_mask *crop, str
{
if (page->res_unit == RESUNIT_INCH || page->res_unit == RESUNIT_CENTIMETER)
{ /* inches or centimeters specified */
- hmargin = (uint32_t)(page->hmargin * scale * page->hres * ((image->bps + 7) / 8));
- vmargin = (uint32_t)(page->vmargin * scale * page->vres * ((image->bps + 7) / 8));
+ hmargin = _TIFFClampDoubleToUInt32(page->hmargin * scale * page->hres * ((image->bps + 7) / 8));
+ vmargin = _TIFFClampDoubleToUInt32(page->vmargin * scale * page->vres * ((image->bps + 7) / 8));
}
else
{ /* Otherwise user has specified pixels as reference unit */
- hmargin = (uint32_t)(page->hmargin * scale * ((image->bps + 7) / 8));
- vmargin = (uint32_t)(page->vmargin * scale * ((image->bps + 7) / 8));
+ hmargin = _TIFFClampDoubleToUInt32(page->hmargin * scale * ((image->bps + 7) / 8));
+ vmargin = _TIFFClampDoubleToUInt32(page->vmargin * scale * ((image->bps + 7) / 8));
}
if ((hmargin * 2.0) > (pwidth * page->hres))
@@ -5912,13 +5912,13 @@ computeOutputPixelOffsets (struct crop_mask *crop, str
{
if (page->mode & PAGE_MODE_PAPERSIZE )
{
- owidth = (uint32_t)((pwidth * page->hres) - (hmargin * 2));
- olength = (uint32_t)((plength * page->vres) - (vmargin * 2));
+ owidth = _TIFFClampDoubleToUInt32((pwidth * page->hres) - (hmargin * 2));
+ olength = _TIFFClampDoubleToUInt32((plength * page->vres) - (vmargin * 2));
}
else
{
- owidth = (uint32_t)(iwidth - (hmargin * 2 * page->hres));
- olength = (uint32_t)(ilength - (vmargin * 2 * page->vres));
+ owidth = _TIFFClampDoubleToUInt32(iwidth - (hmargin * 2 * page->hres));
+ olength = _TIFFClampDoubleToUInt32(ilength - (vmargin * 2 * page->vres));
}
}
@@ -5926,6 +5926,12 @@ computeOutputPixelOffsets (struct crop_mask *crop, str
owidth = iwidth;
if (olength > ilength)
olength = ilength;
+
+ if (owidth == 0 || olength == 0)
+ {
+ TIFFError("computeOutputPixelOffsets", "Integer overflow when calculating the number of pages");
+ exit(EXIT_FAILURE);
+ }
/* Compute the number of pages required for Portrait or Landscape */
switch (page->orient)

View File

@ -33,6 +33,8 @@ lib/pkgconfig/libtiff-4.pc
@man man/man1/pal2rgb.1
@man man/man1/ppm2tiff.1
@man man/man1/raw2tiff.1
@man man/man1/rgb2ycbcr.1
@man man/man1/thumbnail.1
@man man/man1/tiff2bw.1
@man man/man1/tiff2pdf.1
@man man/man1/tiff2ps.1
@ -47,23 +49,33 @@ lib/pkgconfig/libtiff-4.pc
@man man/man1/tiffmedian.1
@man man/man1/tiffset.1
@man man/man1/tiffsplit.1
@man man/man3/TIFFAccessTagMethods.3
@man man/man3/TIFFClientInfo.3
@man man/man3/TIFFClose.3
@man man/man3/TIFFCreateDirectory.3
@man man/man3/TIFFCustomDirectory.3
@man man/man3/TIFFCustomTagList.3
@man man/man3/TIFFDataWidth.3
@man man/man3/TIFFDeferStrileArrayWriting.3
@man man/man3/TIFFError.3
@man man/man3/TIFFFieldDataType.3
@man man/man3/TIFFFieldName.3
@man man/man3/TIFFFieldPassCount.3
@man man/man3/TIFFFieldQuery.3
@man man/man3/TIFFFieldReadCount.3
@man man/man3/TIFFFieldTag.3
@man man/man3/TIFFFieldWriteCount.3
@man man/man3/TIFFFlush.3
@man man/man3/TIFFGetField.3
@man man/man3/TIFFMergeFieldInfo.3
@man man/man3/TIFFOpen.3
@man man/man3/TIFFPrintDirectory.3
@man man/man3/TIFFProcFunctions.3
@man man/man3/TIFFRGBAImage.3
@man man/man3/TIFFReadDirectory.3
@man man/man3/TIFFReadEncodedStrip.3
@man man/man3/TIFFReadEncodedTile.3
@man man/man3/TIFFReadFromUserBuffer.3
@man man/man3/TIFFReadRGBAImage.3
@man man/man3/TIFFReadRGBAStrip.3
@man man/man3/TIFFReadRGBATile.3
@ -73,6 +85,8 @@ lib/pkgconfig/libtiff-4.pc
@man man/man3/TIFFReadTile.3
@man man/man3/TIFFSetDirectory.3
@man man/man3/TIFFSetField.3
@man man/man3/TIFFSetTagExtender.3
@man man/man3/TIFFStrileQuery.3
@man man/man3/TIFFWarning.3
@man man/man3/TIFFWriteDirectory.3
@man man/man3/TIFFWriteEncodedStrip.3
@ -90,157 +104,380 @@ lib/pkgconfig/libtiff-4.pc
@man man/man3/TIFFstrip.3
@man man/man3/TIFFswab.3
@man man/man3/TIFFtile.3
@man man/man3/_TIFFRewriteField.3
@man man/man3/_TIFFauxiliary.3
@man man/man3/libtiff.3
share/doc/tiff/
share/doc/tiff/COPYRIGHT
share/doc/tiff/ChangeLog
share/doc/tiff/LICENSE.md
share/doc/tiff/README.md
share/doc/tiff/RELEASE-DATE
share/doc/tiff/TIFFTechNote2.html
share/doc/tiff/TODO
share/doc/tiff/VERSION
share/doc/tiff/addingtags.html
share/doc/tiff/bugs.html
share/doc/tiff/build.html
share/doc/tiff/contrib.html
share/doc/tiff/document.html
share/doc/tiff/images/
share/doc/tiff/images.html
share/doc/tiff/images/back.gif
share/doc/tiff/images/bali.jpg
share/doc/tiff/images/cat.gif
share/doc/tiff/images/cover.jpg
share/doc/tiff/images/cramps.gif
share/doc/tiff/images/dave.gif
share/doc/tiff/images/info.gif
share/doc/tiff/images/jello.jpg
share/doc/tiff/images/jim.gif
share/doc/tiff/images/note.gif
share/doc/tiff/images/oxford.gif
share/doc/tiff/images/quad.jpg
share/doc/tiff/images/ring.gif
share/doc/tiff/images/smallliz.jpg
share/doc/tiff/images/strike.gif
share/doc/tiff/images/warning.gif
share/doc/tiff/index.html
share/doc/tiff/internals.html
share/doc/tiff/intro.html
share/doc/tiff/libtiff.html
share/doc/tiff/man/
share/doc/tiff/man/TIFFClose.3tiff.html
share/doc/tiff/man/TIFFDataWidth.3tiff.html
share/doc/tiff/man/TIFFError.3tiff.html
share/doc/tiff/man/TIFFFieldDataType.3tiff.html
share/doc/tiff/man/TIFFFieldName.3tiff.html
share/doc/tiff/man/TIFFFieldPassCount.3tiff.html
share/doc/tiff/man/TIFFFieldReadCount.3tiff.html
share/doc/tiff/man/TIFFFieldTag.3tiff.html
share/doc/tiff/man/TIFFFieldWriteCount.3tiff.html
share/doc/tiff/man/TIFFFlush.3tiff.html
share/doc/tiff/man/TIFFGetField.3tiff.html
share/doc/tiff/man/TIFFOpen.3tiff.html
share/doc/tiff/man/TIFFPrintDirectory.3tiff.html
share/doc/tiff/man/TIFFRGBAImage.3tiff.html
share/doc/tiff/man/TIFFReadDirectory.3tiff.html
share/doc/tiff/man/TIFFReadEncodedStrip.3tiff.html
share/doc/tiff/man/TIFFReadEncodedTile.3tiff.html
share/doc/tiff/man/TIFFReadRGBAImage.3tiff.html
share/doc/tiff/man/TIFFReadRGBAStrip.3tiff.html
share/doc/tiff/man/TIFFReadRGBATile.3tiff.html
share/doc/tiff/man/TIFFReadRawStrip.3tiff.html
share/doc/tiff/man/TIFFReadRawTile.3tiff.html
share/doc/tiff/man/TIFFReadScanline.3tiff.html
share/doc/tiff/man/TIFFReadTile.3tiff.html
share/doc/tiff/man/TIFFSetDirectory.3tiff.html
share/doc/tiff/man/TIFFSetField.3tiff.html
share/doc/tiff/man/TIFFWarning.3tiff.html
share/doc/tiff/man/TIFFWriteDirectory.3tiff.html
share/doc/tiff/man/TIFFWriteEncodedStrip.3tiff.html
share/doc/tiff/man/TIFFWriteEncodedTile.3tiff.html
share/doc/tiff/man/TIFFWriteRawStrip.3tiff.html
share/doc/tiff/man/TIFFWriteRawTile.3tiff.html
share/doc/tiff/man/TIFFWriteScanline.3tiff.html
share/doc/tiff/man/TIFFWriteTile.3tiff.html
share/doc/tiff/man/TIFFbuffer.3tiff.html
share/doc/tiff/man/TIFFcodec.3tiff.html
share/doc/tiff/man/TIFFcolor.3tiff.html
share/doc/tiff/man/TIFFmemory.3tiff.html
share/doc/tiff/man/TIFFquery.3tiff.html
share/doc/tiff/man/TIFFsize.3tiff.html
share/doc/tiff/man/TIFFstrip.3tiff.html
share/doc/tiff/man/TIFFswab.3tiff.html
share/doc/tiff/man/TIFFtile.3tiff.html
share/doc/tiff/man/fax2ps.1.html
share/doc/tiff/man/fax2tiff.1.html
share/doc/tiff/man/index.html
share/doc/tiff/man/libtiff.3tiff.html
share/doc/tiff/man/pal2rgb.1.html
share/doc/tiff/man/ppm2tiff.1.html
share/doc/tiff/man/raw2tiff.1.html
share/doc/tiff/man/tiff2bw.1.html
share/doc/tiff/man/tiff2pdf.1.html
share/doc/tiff/man/tiff2ps.1.html
share/doc/tiff/man/tiff2rgba.1.html
share/doc/tiff/man/tiffcmp.1.html
share/doc/tiff/man/tiffcp.1.html
share/doc/tiff/man/tiffcrop.1.html
share/doc/tiff/man/tiffdither.1.html
share/doc/tiff/man/tiffdump.1.html
share/doc/tiff/man/tiffgt.1.html
share/doc/tiff/man/tiffinfo.1.html
share/doc/tiff/man/tiffmedian.1.html
share/doc/tiff/man/tiffset.1.html
share/doc/tiff/man/tiffsplit.1.html
share/doc/tiff/misc.html
share/doc/tiff/support.html
share/doc/tiff/tools.html
share/doc/tiff/v3.4beta007.html
share/doc/tiff/v3.4beta016.html
share/doc/tiff/v3.4beta018.html
share/doc/tiff/v3.4beta024.html
share/doc/tiff/v3.4beta028.html
share/doc/tiff/v3.4beta029.html
share/doc/tiff/v3.4beta031.html
share/doc/tiff/v3.4beta032.html
share/doc/tiff/v3.4beta033.html
share/doc/tiff/v3.4beta034.html
share/doc/tiff/v3.4beta035.html
share/doc/tiff/v3.4beta036.html
share/doc/tiff/v3.5.1.html
share/doc/tiff/v3.5.2.html
share/doc/tiff/v3.5.3.html
share/doc/tiff/v3.5.4.html
share/doc/tiff/v3.5.5.html
share/doc/tiff/v3.5.6-beta.html
share/doc/tiff/v3.5.7.html
share/doc/tiff/v3.6.0.html
share/doc/tiff/v3.6.1.html
share/doc/tiff/v3.7.0.html
share/doc/tiff/v3.7.0alpha.html
share/doc/tiff/v3.7.0beta.html
share/doc/tiff/v3.7.0beta2.html
share/doc/tiff/v3.7.1.html
share/doc/tiff/v3.7.2.html
share/doc/tiff/v3.7.3.html
share/doc/tiff/v3.7.4.html
share/doc/tiff/v3.8.0.html
share/doc/tiff/v3.8.1.html
share/doc/tiff/v3.8.2.html
share/doc/tiff/v3.9.0beta.html
share/doc/tiff/v3.9.1.html
share/doc/tiff/v3.9.2.html
share/doc/tiff/v4.0.0.html
share/doc/tiff/v4.0.1.html
share/doc/tiff/v4.0.10.html
share/doc/tiff/v4.0.2.html
share/doc/tiff/v4.0.3.html
share/doc/tiff/v4.0.4.html
share/doc/tiff/v4.0.4beta.html
share/doc/tiff/v4.0.5.html
share/doc/tiff/v4.0.6.html
share/doc/tiff/v4.0.7.html
share/doc/tiff/v4.0.8.html
share/doc/tiff/v4.0.9.html
share/doc/tiff/v4.1.0.html
share/doc/tiff/v4.2.0.html
share/doc/tiff/v4.3.0.html
share/doc/tiff/manual/
share/doc/tiff/manual/.buildinfo
share/doc/tiff/manual/_images/
share/doc/tiff/manual/_images/bali.jpg
share/doc/tiff/manual/_images/cat.gif
share/doc/tiff/manual/_images/cover.jpg
share/doc/tiff/manual/_images/cramps.gif
share/doc/tiff/manual/_images/dave.gif
share/doc/tiff/manual/_images/esri.png
share/doc/tiff/manual/_images/jim.gif
share/doc/tiff/manual/_images/leica.png
share/doc/tiff/manual/_images/quad.jpg
share/doc/tiff/manual/_images/ring.gif
share/doc/tiff/manual/_images/safe.png
share/doc/tiff/manual/_images/smallliz.jpg
share/doc/tiff/manual/_images/strike.gif
share/doc/tiff/manual/_images/weogeo.png
share/doc/tiff/manual/_sources/
share/doc/tiff/manual/_sources/addingtags.rst.txt
share/doc/tiff/manual/_sources/build.rst.txt
share/doc/tiff/manual/_sources/contrib.rst.txt
share/doc/tiff/manual/_sources/functions/
share/doc/tiff/manual/_sources/functions.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFAccessTagMethods.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFClientInfo.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFClose.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFCreateDirectory.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFCustomDirectory.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFCustomTagList.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFDataWidth.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFDeferStrileArrayWriting.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFError.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFFieldDataType.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFFieldName.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFFieldPassCount.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFFieldQuery.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFFieldReadCount.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFFieldTag.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFFieldWriteCount.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFFlush.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFGetField.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFMergeFieldInfo.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFOpen.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFOpenOptions.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFPrintDirectory.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFProcFunctions.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFRGBAImage.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFReadDirectory.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFReadEncodedStrip.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFReadEncodedTile.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFReadFromUserBuffer.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFReadRGBAImage.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFReadRGBAStrip.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFReadRGBATile.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFReadRawStrip.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFReadRawTile.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFReadScanline.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFReadTile.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFSetDirectory.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFSetField.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFSetTagExtender.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFStrileQuery.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFWarning.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFWriteDirectory.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFWriteEncodedStrip.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFWriteEncodedTile.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFWriteRawStrip.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFWriteRawTile.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFWriteScanline.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFWriteTile.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFbuffer.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFcodec.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFcolor.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFmemory.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFquery.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFsize.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFstrip.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFswab.rst.txt
share/doc/tiff/manual/_sources/functions/TIFFtile.rst.txt
share/doc/tiff/manual/_sources/functions/_TIFFRewriteField.rst.txt
share/doc/tiff/manual/_sources/functions/_TIFFauxiliary.rst.txt
share/doc/tiff/manual/_sources/functions/libtiff.rst.txt
share/doc/tiff/manual/_sources/images.rst.txt
share/doc/tiff/manual/_sources/index.rst.txt
share/doc/tiff/manual/_sources/internals.rst.txt
share/doc/tiff/manual/_sources/libtiff.rst.txt
share/doc/tiff/manual/_sources/project/
share/doc/tiff/manual/_sources/project/acknowledgements.rst.txt
share/doc/tiff/manual/_sources/project/bugs.rst.txt
share/doc/tiff/manual/_sources/project/index.rst.txt
share/doc/tiff/manual/_sources/project/license.rst.txt
share/doc/tiff/manual/_sources/project/mailinglist.rst.txt
share/doc/tiff/manual/_sources/releases/
share/doc/tiff/manual/_sources/releases/historical.rst.txt
share/doc/tiff/manual/_sources/releases/index.rst.txt
share/doc/tiff/manual/_sources/releases/v3.4beta007.rst.txt
share/doc/tiff/manual/_sources/releases/v3.4beta016.rst.txt
share/doc/tiff/manual/_sources/releases/v3.4beta018.rst.txt
share/doc/tiff/manual/_sources/releases/v3.4beta024.rst.txt
share/doc/tiff/manual/_sources/releases/v3.4beta028.rst.txt
share/doc/tiff/manual/_sources/releases/v3.4beta029.rst.txt
share/doc/tiff/manual/_sources/releases/v3.4beta031.rst.txt
share/doc/tiff/manual/_sources/releases/v3.4beta032.rst.txt
share/doc/tiff/manual/_sources/releases/v3.4beta033.rst.txt
share/doc/tiff/manual/_sources/releases/v3.4beta034.rst.txt
share/doc/tiff/manual/_sources/releases/v3.4beta035.rst.txt
share/doc/tiff/manual/_sources/releases/v3.4beta036.rst.txt
share/doc/tiff/manual/_sources/releases/v3.5.1.rst.txt
share/doc/tiff/manual/_sources/releases/v3.5.2.rst.txt
share/doc/tiff/manual/_sources/releases/v3.5.3.rst.txt
share/doc/tiff/manual/_sources/releases/v3.5.4.rst.txt
share/doc/tiff/manual/_sources/releases/v3.5.5.rst.txt
share/doc/tiff/manual/_sources/releases/v3.5.6beta.rst.txt
share/doc/tiff/manual/_sources/releases/v3.5.7.rst.txt
share/doc/tiff/manual/_sources/releases/v3.6.0.rst.txt
share/doc/tiff/manual/_sources/releases/v3.6.1.rst.txt
share/doc/tiff/manual/_sources/releases/v3.7.0.rst.txt
share/doc/tiff/manual/_sources/releases/v3.7.0alpha.rst.txt
share/doc/tiff/manual/_sources/releases/v3.7.0beta.rst.txt
share/doc/tiff/manual/_sources/releases/v3.7.0beta2.rst.txt
share/doc/tiff/manual/_sources/releases/v3.7.1.rst.txt
share/doc/tiff/manual/_sources/releases/v3.7.2.rst.txt
share/doc/tiff/manual/_sources/releases/v3.7.3.rst.txt
share/doc/tiff/manual/_sources/releases/v3.7.4.rst.txt
share/doc/tiff/manual/_sources/releases/v3.8.0.rst.txt
share/doc/tiff/manual/_sources/releases/v3.8.1.rst.txt
share/doc/tiff/manual/_sources/releases/v3.8.2.rst.txt
share/doc/tiff/manual/_sources/releases/v3.9.0.rst.txt
share/doc/tiff/manual/_sources/releases/v3.9.0beta.rst.txt
share/doc/tiff/manual/_sources/releases/v3.9.1.rst.txt
share/doc/tiff/manual/_sources/releases/v3.9.2.rst.txt
share/doc/tiff/manual/_sources/releases/v3.9.3.rst.txt
share/doc/tiff/manual/_sources/releases/v3.9.4.rst.txt
share/doc/tiff/manual/_sources/releases/v3.9.5.rst.txt
share/doc/tiff/manual/_sources/releases/v4.0.0.rst.txt
share/doc/tiff/manual/_sources/releases/v4.0.1.rst.txt
share/doc/tiff/manual/_sources/releases/v4.0.10.rst.txt
share/doc/tiff/manual/_sources/releases/v4.0.2.rst.txt
share/doc/tiff/manual/_sources/releases/v4.0.3.rst.txt
share/doc/tiff/manual/_sources/releases/v4.0.4.rst.txt
share/doc/tiff/manual/_sources/releases/v4.0.4beta.rst.txt
share/doc/tiff/manual/_sources/releases/v4.0.5.rst.txt
share/doc/tiff/manual/_sources/releases/v4.0.6.rst.txt
share/doc/tiff/manual/_sources/releases/v4.0.7.rst.txt
share/doc/tiff/manual/_sources/releases/v4.0.8.rst.txt
share/doc/tiff/manual/_sources/releases/v4.0.9.rst.txt
share/doc/tiff/manual/_sources/releases/v4.1.0.rst.txt
share/doc/tiff/manual/_sources/releases/v4.2.0.rst.txt
share/doc/tiff/manual/_sources/releases/v4.3.0.rst.txt
share/doc/tiff/manual/_sources/releases/v4.4.0.rst.txt
share/doc/tiff/manual/_sources/releases/v4.5.0.rst.txt
share/doc/tiff/manual/_sources/specification/
share/doc/tiff/manual/_sources/specification/bigtiff.rst.txt
share/doc/tiff/manual/_sources/specification/coverage-bigtiff.rst.txt
share/doc/tiff/manual/_sources/specification/coverage.rst.txt
share/doc/tiff/manual/_sources/specification/index.rst.txt
share/doc/tiff/manual/_sources/specification/technote2.rst.txt
share/doc/tiff/manual/_sources/terms.rst.txt
share/doc/tiff/manual/_sources/tools/
share/doc/tiff/manual/_sources/tools.rst.txt
share/doc/tiff/manual/_sources/tools/fax2ps.rst.txt
share/doc/tiff/manual/_sources/tools/fax2tiff.rst.txt
share/doc/tiff/manual/_sources/tools/pal2rgb.rst.txt
share/doc/tiff/manual/_sources/tools/ppm2tiff.rst.txt
share/doc/tiff/manual/_sources/tools/raw2tiff.rst.txt
share/doc/tiff/manual/_sources/tools/rgb2ycbcr.rst.txt
share/doc/tiff/manual/_sources/tools/thumbnail.rst.txt
share/doc/tiff/manual/_sources/tools/tiff2bw.rst.txt
share/doc/tiff/manual/_sources/tools/tiff2pdf.rst.txt
share/doc/tiff/manual/_sources/tools/tiff2ps.rst.txt
share/doc/tiff/manual/_sources/tools/tiff2rgba.rst.txt
share/doc/tiff/manual/_sources/tools/tiffcmp.rst.txt
share/doc/tiff/manual/_sources/tools/tiffcp.rst.txt
share/doc/tiff/manual/_sources/tools/tiffcrop.rst.txt
share/doc/tiff/manual/_sources/tools/tiffdither.rst.txt
share/doc/tiff/manual/_sources/tools/tiffdump.rst.txt
share/doc/tiff/manual/_sources/tools/tiffgt.rst.txt
share/doc/tiff/manual/_sources/tools/tiffinfo.rst.txt
share/doc/tiff/manual/_sources/tools/tiffmedian.rst.txt
share/doc/tiff/manual/_sources/tools/tiffset.rst.txt
share/doc/tiff/manual/_sources/tools/tiffsplit.rst.txt
share/doc/tiff/manual/_static/
share/doc/tiff/manual/_static/_sphinx_javascript_frameworks_compat.js
share/doc/tiff/manual/_static/basic.css
share/doc/tiff/manual/_static/contents.png
share/doc/tiff/manual/_static/doctools.js
share/doc/tiff/manual/_static/documentation_options.js
share/doc/tiff/manual/_static/file.png
share/doc/tiff/manual/_static/jquery-3.6.0.js
share/doc/tiff/manual/_static/jquery.js
share/doc/tiff/manual/_static/language_data.js
share/doc/tiff/manual/_static/minus.png
share/doc/tiff/manual/_static/navigation.png
share/doc/tiff/manual/_static/plus.png
share/doc/tiff/manual/_static/pygments.css
share/doc/tiff/manual/_static/searchtools.js
share/doc/tiff/manual/_static/sphinx_highlight.js
share/doc/tiff/manual/_static/sphinxdoc.css
share/doc/tiff/manual/_static/underscore-1.13.1.js
share/doc/tiff/manual/_static/underscore.js
share/doc/tiff/manual/addingtags.html
share/doc/tiff/manual/build.html
share/doc/tiff/manual/contrib.html
share/doc/tiff/manual/functions/
share/doc/tiff/manual/functions.html
share/doc/tiff/manual/functions/TIFFAccessTagMethods.html
share/doc/tiff/manual/functions/TIFFClientInfo.html
share/doc/tiff/manual/functions/TIFFClose.html
share/doc/tiff/manual/functions/TIFFCreateDirectory.html
share/doc/tiff/manual/functions/TIFFCustomDirectory.html
share/doc/tiff/manual/functions/TIFFCustomTagList.html
share/doc/tiff/manual/functions/TIFFDataWidth.html
share/doc/tiff/manual/functions/TIFFDeferStrileArrayWriting.html
share/doc/tiff/manual/functions/TIFFError.html
share/doc/tiff/manual/functions/TIFFFieldDataType.html
share/doc/tiff/manual/functions/TIFFFieldName.html
share/doc/tiff/manual/functions/TIFFFieldPassCount.html
share/doc/tiff/manual/functions/TIFFFieldQuery.html
share/doc/tiff/manual/functions/TIFFFieldReadCount.html
share/doc/tiff/manual/functions/TIFFFieldTag.html
share/doc/tiff/manual/functions/TIFFFieldWriteCount.html
share/doc/tiff/manual/functions/TIFFFlush.html
share/doc/tiff/manual/functions/TIFFGetField.html
share/doc/tiff/manual/functions/TIFFMergeFieldInfo.html
share/doc/tiff/manual/functions/TIFFOpen.html
share/doc/tiff/manual/functions/TIFFOpenOptions.html
share/doc/tiff/manual/functions/TIFFPrintDirectory.html
share/doc/tiff/manual/functions/TIFFProcFunctions.html
share/doc/tiff/manual/functions/TIFFRGBAImage.html
share/doc/tiff/manual/functions/TIFFReadDirectory.html
share/doc/tiff/manual/functions/TIFFReadEncodedStrip.html
share/doc/tiff/manual/functions/TIFFReadEncodedTile.html
share/doc/tiff/manual/functions/TIFFReadFromUserBuffer.html
share/doc/tiff/manual/functions/TIFFReadRGBAImage.html
share/doc/tiff/manual/functions/TIFFReadRGBAStrip.html
share/doc/tiff/manual/functions/TIFFReadRGBATile.html
share/doc/tiff/manual/functions/TIFFReadRawStrip.html
share/doc/tiff/manual/functions/TIFFReadRawTile.html
share/doc/tiff/manual/functions/TIFFReadScanline.html
share/doc/tiff/manual/functions/TIFFReadTile.html
share/doc/tiff/manual/functions/TIFFSetDirectory.html
share/doc/tiff/manual/functions/TIFFSetField.html
share/doc/tiff/manual/functions/TIFFSetTagExtender.html
share/doc/tiff/manual/functions/TIFFStrileQuery.html
share/doc/tiff/manual/functions/TIFFWarning.html
share/doc/tiff/manual/functions/TIFFWriteDirectory.html
share/doc/tiff/manual/functions/TIFFWriteEncodedStrip.html
share/doc/tiff/manual/functions/TIFFWriteEncodedTile.html
share/doc/tiff/manual/functions/TIFFWriteRawStrip.html
share/doc/tiff/manual/functions/TIFFWriteRawTile.html
share/doc/tiff/manual/functions/TIFFWriteScanline.html
share/doc/tiff/manual/functions/TIFFWriteTile.html
share/doc/tiff/manual/functions/TIFFbuffer.html
share/doc/tiff/manual/functions/TIFFcodec.html
share/doc/tiff/manual/functions/TIFFcolor.html
share/doc/tiff/manual/functions/TIFFmemory.html
share/doc/tiff/manual/functions/TIFFquery.html
share/doc/tiff/manual/functions/TIFFsize.html
share/doc/tiff/manual/functions/TIFFstrip.html
share/doc/tiff/manual/functions/TIFFswab.html
share/doc/tiff/manual/functions/TIFFtile.html
share/doc/tiff/manual/functions/_TIFFRewriteField.html
share/doc/tiff/manual/functions/_TIFFauxiliary.html
share/doc/tiff/manual/functions/libtiff.html
share/doc/tiff/manual/genindex.html
share/doc/tiff/manual/images.html
share/doc/tiff/manual/index.html
share/doc/tiff/manual/internals.html
share/doc/tiff/manual/libtiff.html
share/doc/tiff/manual/objects.inv
share/doc/tiff/manual/project/
share/doc/tiff/manual/project/acknowledgements.html
share/doc/tiff/manual/project/bugs.html
share/doc/tiff/manual/project/index.html
share/doc/tiff/manual/project/license.html
share/doc/tiff/manual/project/mailinglist.html
share/doc/tiff/manual/releases/
share/doc/tiff/manual/releases/historical.html
share/doc/tiff/manual/releases/index.html
share/doc/tiff/manual/releases/v3.4beta007.html
share/doc/tiff/manual/releases/v3.4beta016.html
share/doc/tiff/manual/releases/v3.4beta018.html
share/doc/tiff/manual/releases/v3.4beta024.html
share/doc/tiff/manual/releases/v3.4beta028.html
share/doc/tiff/manual/releases/v3.4beta029.html
share/doc/tiff/manual/releases/v3.4beta031.html
share/doc/tiff/manual/releases/v3.4beta032.html
share/doc/tiff/manual/releases/v3.4beta033.html
share/doc/tiff/manual/releases/v3.4beta034.html
share/doc/tiff/manual/releases/v3.4beta035.html
share/doc/tiff/manual/releases/v3.4beta036.html
share/doc/tiff/manual/releases/v3.5.1.html
share/doc/tiff/manual/releases/v3.5.2.html
share/doc/tiff/manual/releases/v3.5.3.html
share/doc/tiff/manual/releases/v3.5.4.html
share/doc/tiff/manual/releases/v3.5.5.html
share/doc/tiff/manual/releases/v3.5.6beta.html
share/doc/tiff/manual/releases/v3.5.7.html
share/doc/tiff/manual/releases/v3.6.0.html
share/doc/tiff/manual/releases/v3.6.1.html
share/doc/tiff/manual/releases/v3.7.0.html
share/doc/tiff/manual/releases/v3.7.0alpha.html
share/doc/tiff/manual/releases/v3.7.0beta.html
share/doc/tiff/manual/releases/v3.7.0beta2.html
share/doc/tiff/manual/releases/v3.7.1.html
share/doc/tiff/manual/releases/v3.7.2.html
share/doc/tiff/manual/releases/v3.7.3.html
share/doc/tiff/manual/releases/v3.7.4.html
share/doc/tiff/manual/releases/v3.8.0.html
share/doc/tiff/manual/releases/v3.8.1.html
share/doc/tiff/manual/releases/v3.8.2.html
share/doc/tiff/manual/releases/v3.9.0.html
share/doc/tiff/manual/releases/v3.9.0beta.html
share/doc/tiff/manual/releases/v3.9.1.html
share/doc/tiff/manual/releases/v3.9.2.html
share/doc/tiff/manual/releases/v3.9.3.html
share/doc/tiff/manual/releases/v3.9.4.html
share/doc/tiff/manual/releases/v3.9.5.html
share/doc/tiff/manual/releases/v4.0.0.html
share/doc/tiff/manual/releases/v4.0.1.html
share/doc/tiff/manual/releases/v4.0.10.html
share/doc/tiff/manual/releases/v4.0.2.html
share/doc/tiff/manual/releases/v4.0.3.html
share/doc/tiff/manual/releases/v4.0.4.html
share/doc/tiff/manual/releases/v4.0.4beta.html
share/doc/tiff/manual/releases/v4.0.5.html
share/doc/tiff/manual/releases/v4.0.6.html
share/doc/tiff/manual/releases/v4.0.7.html
share/doc/tiff/manual/releases/v4.0.8.html
share/doc/tiff/manual/releases/v4.0.9.html
share/doc/tiff/manual/releases/v4.1.0.html
share/doc/tiff/manual/releases/v4.2.0.html
share/doc/tiff/manual/releases/v4.3.0.html
share/doc/tiff/manual/releases/v4.4.0.html
share/doc/tiff/manual/releases/v4.5.0.html
share/doc/tiff/manual/search.html
share/doc/tiff/manual/searchindex.js
share/doc/tiff/manual/specification/
share/doc/tiff/manual/specification/bigtiff.html
share/doc/tiff/manual/specification/coverage-bigtiff.html
share/doc/tiff/manual/specification/coverage.html
share/doc/tiff/manual/specification/index.html
share/doc/tiff/manual/specification/technote2.html
share/doc/tiff/manual/terms.html
share/doc/tiff/manual/tools/
share/doc/tiff/manual/tools.html
share/doc/tiff/manual/tools/fax2ps.html
share/doc/tiff/manual/tools/fax2tiff.html
share/doc/tiff/manual/tools/pal2rgb.html
share/doc/tiff/manual/tools/ppm2tiff.html
share/doc/tiff/manual/tools/raw2tiff.html
share/doc/tiff/manual/tools/rgb2ycbcr.html
share/doc/tiff/manual/tools/thumbnail.html
share/doc/tiff/manual/tools/tiff2bw.html
share/doc/tiff/manual/tools/tiff2pdf.html
share/doc/tiff/manual/tools/tiff2ps.html
share/doc/tiff/manual/tools/tiff2rgba.html
share/doc/tiff/manual/tools/tiffcmp.html
share/doc/tiff/manual/tools/tiffcp.html
share/doc/tiff/manual/tools/tiffcrop.html
share/doc/tiff/manual/tools/tiffdither.html
share/doc/tiff/manual/tools/tiffdump.html
share/doc/tiff/manual/tools/tiffgt.html
share/doc/tiff/manual/tools/tiffinfo.html
share/doc/tiff/manual/tools/tiffmedian.html
share/doc/tiff/manual/tools/tiffset.html
share/doc/tiff/manual/tools/tiffsplit.html