package/tiff: add patches to fix CVE-2025-8176

Fix the following vulnerability:

- CVE-2025-8176

    A vulnerability was found in LibTIFF up to 4.7.0. It has been declared
    as critical. This vulnerability affects the function get_histogram of
    the file tools/tiffmedian.c. The manipulation leads to use after free.
    The attack needs to be approached locally. The exploit has been
    disclosed to the public and may be used. The patch is identified as
    fe10872e53efba9cc36c66ac4ab3b41a839d5172. It is recommended to apply a
    patch to fix this issue.

For more information, see:
  - https://www.cve.org/CVERecord?id=CVE-2025-8176
  - https://gitlab.com/libtiff/libtiff/-/merge_requests/727

Signed-off-by: Thomas Perale <thomas.perale@mind.be>
Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
This commit is contained in:
Thomas Perale
2025-08-06 22:20:28 +02:00
committed by Peter Korsgaard
parent c897f16a98
commit b3974df966
4 changed files with 123 additions and 0 deletions

View File

@@ -0,0 +1,61 @@
From 3994cf3b3bc6b54c32f240ca5a412cffa11633fa Mon Sep 17 00:00:00 2001
From: Lee Howard <faxguy@howardsilvan.com>
Date: Mon, 19 May 2025 10:53:30 -0700
Subject: [PATCH] Don't skip the first line of the input image. Addresses
issue #703
Upstream: https://gitlab.com/libtiff/libtiff/-/commit/3994cf3b3bc6b54c32f240ca5a412cffa11633fa
CVE: CVE-2025-8176
Signed-off-by: Thomas Perale <thomas.perale@mind.be>
---
tools/tiffdither.c | 4 ++--
tools/tiffmedian.c | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/tools/tiffdither.c b/tools/tiffdither.c
index 714fe03d4..bfed6df18 100644
--- a/tools/tiffdither.c
+++ b/tools/tiffdither.c
@@ -98,7 +98,7 @@ static int fsdither(TIFF *in, TIFF *out)
nextptr = nextline;
for (j = 0; j < imagewidth; ++j)
*nextptr++ = *inptr++;
- for (i = 1; i < imagelength; ++i)
+ for (i = 0; i < imagelength; ++i)
{
tmpptr = thisline;
thisline = nextline;
@@ -146,7 +146,7 @@ static int fsdither(TIFF *in, TIFF *out)
nextptr[0] += v / 16;
}
}
- if (TIFFWriteScanline(out, outline, i - 1, 0) < 0)
+ if (TIFFWriteScanline(out, outline, i, 0) < 0)
goto skip_on_error;
}
goto exit_label;
diff --git a/tools/tiffmedian.c b/tools/tiffmedian.c
index 02b0bc2b4..f6cf26c2c 100644
--- a/tools/tiffmedian.c
+++ b/tools/tiffmedian.c
@@ -917,7 +917,7 @@ static void quant_fsdither(TIFF *in, TIFF *out)
outline = (unsigned char *)_TIFFmalloc(TIFFScanlineSize(out));
GetInputLine(in, 0, goto bad); /* get first line */
- for (i = 1; i <= imagelength; ++i)
+ for (i = 0; i <= imagelength; ++i)
{
SWAP(short *, thisline, nextline);
lastline = (i >= imax);
@@ -997,7 +997,7 @@ static void quant_fsdither(TIFF *in, TIFF *out)
nextptr += 3;
}
}
- if (TIFFWriteScanline(out, outline, i - 1, 0) < 0)
+ if (TIFFWriteScanline(out, outline, i, 0) < 0)
break;
}
bad:
--
GitLab

View File

@@ -0,0 +1,31 @@
From ce46f002eca4148497363f80fab33f9396bcbeda Mon Sep 17 00:00:00 2001
From: Lee Howard <faxguy@howardsilvan.com>
Date: Sat, 24 May 2025 21:25:16 -0700
Subject: [PATCH] Fix tiffmedian bug #707
Upstream: https://gitlab.com/libtiff/libtiff/-/merge_requests/727/diffs?commit_id=ce46f002eca4148497363f80fab33f9396bcbeda
CVE: CVE-2025-8176
Signed-off-by: Thomas Perale <thomas.perale@mind.be>
---
tools/tiffmedian.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/tools/tiffmedian.c b/tools/tiffmedian.c
index f6cf26c2c..8c9978bab 100644
--- a/tools/tiffmedian.c
+++ b/tools/tiffmedian.c
@@ -414,7 +414,10 @@ static void get_histogram(TIFF *in, Colorbox *box)
for (i = 0; i < imagelength; i++)
{
if (TIFFReadScanline(in, inputline, i, 0) <= 0)
- break;
+ {
+ fprintf(stderr, "Error reading scanline\n");
+ exit(EXIT_FAILURE);
+ }
inptr = inputline;
for (j = imagewidth; j-- > 0;)
{
--
GitLab

View File

@@ -0,0 +1,28 @@
From ecc4ddbf1f0fed7957d1e20361e37f01907898e0 Mon Sep 17 00:00:00 2001
From: Lee Howard <faxguy@howardsilvan.com>
Date: Sat, 24 May 2025 21:38:09 -0700
Subject: [PATCH] conflict resolution
Upstream: https://gitlab.com/libtiff/libtiff/-/merge_requests/727/diffs?commit_id=ecc4ddbf1f0fed7957d1e20361e37f01907898e0
CVE: CVE-2025-8176
Signed-off-by: Thomas Perale <thomas.perale@mind.be>
---
tools/tiffmedian.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/tiffmedian.c b/tools/tiffmedian.c
index 8c9978bab..47e0524bc 100644
--- a/tools/tiffmedian.c
+++ b/tools/tiffmedian.c
@@ -920,7 +920,7 @@ static void quant_fsdither(TIFF *in, TIFF *out)
outline = (unsigned char *)_TIFFmalloc(TIFFScanlineSize(out));
GetInputLine(in, 0, goto bad); /* get first line */
- for (i = 0; i <= imagelength; ++i)
+ for (i = 0; i < imagelength; ++i)
{
SWAP(short *, thisline, nextline);
lastline = (i >= imax);
--
GitLab

View File

@@ -13,6 +13,9 @@ TIFF_CPE_ID_VENDOR = libtiff
TIFF_CPE_ID_PRODUCT = libtiff
TIFF_INSTALL_STAGING = YES
# 0001-don-t-skip-the-first-line-of-the-input-image.patch, 0002-fix-tiffmedian-bug.patch, 0003-conflict-resolution.patch
TIFF_IGNORE_CVES += CVE-2025-8176
# webp has a (optional) dependency on tiff, so we can't have webp
# support in tiff, or that would create a circular dependency.
TIFF_CONF_OPTS = \