From nobody Tue Aug 16 21:45:49 2022 X-Original-To: dev-commits-ports-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4M6l7y0jmsz4ZWx8; Tue, 16 Aug 2022 21:45:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4M6l7x5yscz3m8R; Tue, 16 Aug 2022 21:45:49 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1660686349; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NDgQjyWtQil8YvULwvNY0kwhNbPWzeucexCz43XS81w=; b=cYgq0V5BXB92pg1/vBQTOiG6VO9xURajsp/l5ZwNltRz/RRjoJae2Ycvz/t9aNzSur3p6b GXGEcCxQib3naxSY1yy2Pz4DJtaF41K6zLFNcQc4yNpFvx5JOlI/ezHbudrNMRSQDQmgBd 4UU8rJFtRtrZuwLOwTkvMhg0F5dw6Q6oagFZ4vJSbjFxydTmqCpLJDOgGih7qfHyfX4pBP 8UidPoYrFTPgoAMbSqgPf/RuacPsR02SNz8ydLqDRDOPNLBMbFpjqL6yKfK1hMR9LEvgKN F5QWSx1OrbhuAwWK7mC+V70+LsonvD6B7KAsrEMS1xEwlYRwj2LcvCKVduTBVA== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4M6l7x52xXzQ3X; Tue, 16 Aug 2022 21:45:49 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 27GLjnQn014225; Tue, 16 Aug 2022 21:45:49 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 27GLjnA5014224; Tue, 16 Aug 2022 21:45:49 GMT (envelope-from git) Date: Tue, 16 Aug 2022 21:45:49 GMT Message-Id: <202208162145.27GLjnA5014224@gitrepo.freebsd.org> To: ports-committers@FreeBSD.org, dev-commits-ports-all@FreeBSD.org, dev-commits-ports-main@FreeBSD.org From: Daniel Engberg Subject: git: a52fed3d45da - main - graphics/tiff: Update to 4.4.0 List-Id: Commits to the main branch of the FreeBSD ports repository List-Archive: https://lists.freebsd.org/archives/dev-commits-ports-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-ports-main@freebsd.org X-BeenThere: dev-commits-ports-main@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: diizzy X-Git-Repository: ports X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a52fed3d45da977bbd6a1ef7e2c4ea338433ad0b Auto-Submitted: auto-generated ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1660686349; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=NDgQjyWtQil8YvULwvNY0kwhNbPWzeucexCz43XS81w=; b=R7Sq0F7GRYREN96guBu4MxSoRFNQ6WUeBVBOexq2UJR7RirC1guEYS4LlEEwlbEjptGHGu nxcYKG+cOaloDgnBFAuYJbFhaZrPU5jVBk3cHpWVWgiIB82gtTONbuI4gScUO0N6Y6SFqN pcCQ6a0cPPiM+68Kodw/vJxFMZTRAu7zlMNsqPRMdSMfOx1cy9jfRGi9lsqa4wAAMoG+RR 6k8/MmrTSOIwzRFD5VBMrjdSw4HoKrefdSJa0WiA/lyhYtvZ8Lcdb+fNB2PQCzPXscG9KU tiN8r0VWefyakAmvSo2D2RGeSkwyEm4zxs83/ikFZ7GtAZQCrKMYIzILypQLCw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1660686349; a=rsa-sha256; cv=none; b=tEDgbq05c/xcMmjZ7YcMp/6UDIubH1d91H5FnuRjXhCCqInr0F48T2GEVNh70Ug95zhYqz 0gKKHKaKxvUyfZvDOWKWt8v7Sau15ZoLwBqYD99tsPcv7VWyCEasS0anmauCT6rkxwY4lw ldbA+0m1JyizpGIYgg07pmVJElZzdzMy09GAYv+gOytkjOZu0OyjgcblCzDs9kPFn4/Vhr Mvcq7YV7PejXKvFC/WVIjzOrQBcAGoFfHPuDkIiCkVmvM47jw1VJ4T0VAOMxonsc5XgEf0 ma1IrgdQTopEfuDIp09z1GF6ZwwBHm3/IPFXBy8REOo08mAMshpBqmXnKdJ+1Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none X-ThisMailContainsUnwantedMimeParts: N The branch main has been updated by diizzy: URL: https://cgit.FreeBSD.org/ports/commit/?id=a52fed3d45da977bbd6a1ef7e2c4ea338433ad0b commit a52fed3d45da977bbd6a1ef7e2c4ea338433ad0b Author: Daniel Engberg AuthorDate: 2022-08-16 21:20:07 +0000 Commit: Daniel Engberg CommitDate: 2022-08-16 21:45:38 +0000 graphics/tiff: Update to 4.4.0 * Add libdeflate for improved performance as dependency * Add zstd as dependency, this is the default in Alpine, Arch Linux, Debian, Fedora and OpenSUSE * Backport upstream commit dd1bcc7abb26094e93636e85520f0d8f81ab0fab to fix CVE-2022-2056, CVE-2022-2057 and CVE-2022-2058 * Backport upstream commit 275735d0354e39c0ac1dc3c0db2120d6f31d1990 to fix CVE-2022-34526 PR: 265164 Approved by: portmgr (antoine) Exp-run by: antoine --- graphics/tiff/Makefile | 13 +- graphics/tiff/distinfo | 6 +- ...git-01-dd1bcc7abb26094e93636e85520f0d8f81ab0fab | 180 +++++++++++++++++++++ ...git-02-275735d0354e39c0ac1dc3c0db2120d6f31d1990 | 28 ++++ graphics/tiff/pkg-plist | 4 +- 5 files changed, 219 insertions(+), 12 deletions(-) diff --git a/graphics/tiff/Makefile b/graphics/tiff/Makefile index 5ab1e4844369..0d7560b7b6a0 100644 --- a/graphics/tiff/Makefile +++ b/graphics/tiff/Makefile @@ -1,5 +1,5 @@ PORTNAME= tiff -PORTVERSION= 4.3.0 +DISTVERSION= 4.4.0 CATEGORIES= graphics MASTER_SITES= https://download.osgeo.org/libtiff/ @@ -9,19 +9,18 @@ COMMENT= Tools and library routines for working with TIFF images LICENSE= BSD3CLAUSE LICENSE_FILE= ${WRKSRC}/COPYRIGHT -LIB_DEPENDS= libjbig.so:graphics/jbigkit +LIB_DEPENDS= libdeflate.so:archivers/libdeflate \ + libjbig.so:graphics/jbigkit \ + libzstd.so:archivers/zstd -USES= cpe jpeg libtool pathfix +USES= cpe jpeg libtool localbase pathfix tar:xz CPE_PRODUCT= libtiff CPE_VERSION= ${DISTVERSION:C/[a-z]+//} CPE_UPDATE= ${DISTVERSION:C/[0-9.]+//} USE_LDCONFIG= yes GNU_CONFIGURE= yes -CONFIGURE_ARGS+= --with-jpeg-include-dir=${LOCALBASE}/include \ - --with-jpeg-lib-dir=${LOCALBASE}/lib \ - --without-x \ +CONFIGURE_ARGS= --without-x \ --disable-webp \ - --disable-zstd INSTALL_TARGET= install-strip TEST_TARGET= check diff --git a/graphics/tiff/distinfo b/graphics/tiff/distinfo index ce00da3334f7..992f30c8463b 100644 --- a/graphics/tiff/distinfo +++ b/graphics/tiff/distinfo @@ -1,3 +1,3 @@ -TIMESTAMP = 1619212569 -SHA256 (tiff-4.3.0.tar.gz) = 0e46e5acb087ce7d1ac53cf4f56a09b221537fc86dfc5daaad1c2e89e1b37ac8 -SIZE (tiff-4.3.0.tar.gz) = 2808254 +TIMESTAMP = 1657611207 +SHA256 (tiff-4.4.0.tar.xz) = 49307b510048ccc7bc40f2cba6e8439182fe6e654057c1a1683139bf2ecb1dc1 +SIZE (tiff-4.4.0.tar.xz) = 1929292 diff --git a/graphics/tiff/files/patch-git-01-dd1bcc7abb26094e93636e85520f0d8f81ab0fab b/graphics/tiff/files/patch-git-01-dd1bcc7abb26094e93636e85520f0d8f81ab0fab new file mode 100644 index 000000000000..85ccf0401568 --- /dev/null +++ b/graphics/tiff/files/patch-git-01-dd1bcc7abb26094e93636e85520f0d8f81ab0fab @@ -0,0 +1,180 @@ +From dd1bcc7abb26094e93636e85520f0d8f81ab0fab Mon Sep 17 00:00:00 2001 +From: 4ugustus +Date: Sat, 11 Jun 2022 09:31:43 +0000 +Subject: [PATCH] fix the FPE in tiffcrop (#415, #427, and #428) + +--- + libtiff/tif_aux.c | 9 +++++++ + libtiff/tiffiop.h | 1 + + tools/tiffcrop.c | 62 ++++++++++++++++++++++++++--------------------- + 3 files changed, 44 insertions(+), 28 deletions(-) + +diff --git a/libtiff/tif_aux.c b/libtiff/tif_aux.c +index 140f26c7..5b88c8d0 100644 +--- libtiff/tif_aux.c ++++ 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 */ +diff --git a/libtiff/tiffiop.h b/libtiff/tiffiop.h +index e3af461d..4e8bdac2 100644 +--- libtiff/tiffiop.h ++++ 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, +diff --git a/tools/tiffcrop.c b/tools/tiffcrop.c +index 1f827b2b..90286a5e 100644 +--- tools/tiffcrop.c ++++ tools/tiffcrop.c +@@ -5268,17 +5268,17 @@ computeInputPixelOffsets(struct crop_mask *crop, struct image_data *image, + { + 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, struct image_data *image, + { + 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, struct image_data *image, + 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, struct image_data *image, + { + 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, struct image_data *image, + { + 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)); + } + } + +@@ -5927,6 +5927,12 @@ computeOutputPixelOffsets (struct crop_mask *crop, struct image_data *image, + 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) + { +-- +GitLab + diff --git a/graphics/tiff/files/patch-git-02-275735d0354e39c0ac1dc3c0db2120d6f31d1990 b/graphics/tiff/files/patch-git-02-275735d0354e39c0ac1dc3c0db2120d6f31d1990 new file mode 100644 index 000000000000..f86cd7151086 --- /dev/null +++ b/graphics/tiff/files/patch-git-02-275735d0354e39c0ac1dc3c0db2120d6f31d1990 @@ -0,0 +1,28 @@ +From 275735d0354e39c0ac1dc3c0db2120d6f31d1990 Mon Sep 17 00:00:00 2001 +From: Even Rouault +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 +--- + libtiff/tif_dirinfo.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/libtiff/tif_dirinfo.c b/libtiff/tif_dirinfo.c +index c30f569b..3371cb5c 100644 +--- libtiff/tif_dirinfo.c ++++ 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) { +-- +GitLab + diff --git a/graphics/tiff/pkg-plist b/graphics/tiff/pkg-plist index 3f0a450a7194..11a80fd32089 100644 --- a/graphics/tiff/pkg-plist +++ b/graphics/tiff/pkg-plist @@ -24,11 +24,11 @@ include/tiffvers.h lib/libtiff.a lib/libtiff.so lib/libtiff.so.5 -lib/libtiff.so.5.7.0 +lib/libtiff.so.5.8.0 lib/libtiffxx.a lib/libtiffxx.so lib/libtiffxx.so.5 -lib/libtiffxx.so.5.7.0 +lib/libtiffxx.so.5.8.0 libdata/pkgconfig/libtiff-4.pc man/man1/fax2ps.1.gz man/man1/fax2tiff.1.gz