public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Sandro Mani <manisandro@gmail.com>
To: git-commits@fedoraproject.org
Subject: [rpms/python-pillow] f43: Backport fixes for CVE-2026-59197 and CVE-2026-54058
Date: Sun, 19 Jul 2026 07:03:16 GMT [thread overview]
Message-ID: <178444459615.1.15372680259396763357.rpms-python-pillow-0e34cf3307cd@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/python-pillow
Branch : f43
Commit : 0e34cf3307cdc0a1aebf173c09227681a7289139
Author : Sandro Mani <manisandro@gmail.com>
Date : 2026-07-19T09:02:58+02:00
Stats : +218/-17 in 10 file(s)
URL : https://src.fedoraproject.org/rpms/python-pillow/c/0e34cf3307cdc0a1aebf173c09227681a7289139?branch=f43
Log:
Backport fixes for CVE-2026-59197 and CVE-2026-54058
---
diff --git a/0a263e6264aa5399988d9acd3bbfbca2ca3ec77d.patch b/0a263e6264aa5399988d9acd3bbfbca2ca3ec77d.patch
index b698e37..9ad3d92 100644
--- a/0a263e6264aa5399988d9acd3bbfbca2ca3ec77d.patch
+++ b/0a263e6264aa5399988d9acd3bbfbca2ca3ec77d.patch
@@ -1,6 +1,6 @@
diff -rupN --no-dereference Pillow-11.3.0/src/PIL/BdfFontFile.py Pillow-11.3.0-new/src/PIL/BdfFontFile.py
--- Pillow-11.3.0/src/PIL/BdfFontFile.py 2025-07-01 09:41:24.000000000 +0200
-+++ Pillow-11.3.0-new/src/PIL/BdfFontFile.py 2026-07-08 00:44:43.678121242 +0200
++++ Pillow-11.3.0-new/src/PIL/BdfFontFile.py 2026-07-19 08:50:48.485746648 +0200
@@ -69,6 +69,7 @@ def bdf_char(
# and x and y displacement (BBxoff0, BByoff0)
# of the lower left corner from the origin of the character.
@@ -11,7 +11,7 @@ diff -rupN --no-dereference Pillow-11.3.0/src/PIL/BdfFontFile.py Pillow-11.3.0-n
# followed by the width in x and y of the character in device pixels.
diff -rupN --no-dereference Pillow-11.3.0/src/PIL/FontFile.py Pillow-11.3.0-new/src/PIL/FontFile.py
--- Pillow-11.3.0/src/PIL/FontFile.py 2025-07-01 09:41:24.000000000 +0200
-+++ Pillow-11.3.0-new/src/PIL/FontFile.py 2026-07-08 00:44:43.678503853 +0200
++++ Pillow-11.3.0-new/src/PIL/FontFile.py 2026-07-19 08:50:48.486101567 +0200
@@ -74,7 +74,7 @@ class FontFile:
if glyph:
d, dst, src, im = glyph
@@ -31,7 +31,7 @@ diff -rupN --no-dereference Pillow-11.3.0/src/PIL/FontFile.py Pillow-11.3.0-new/
tuple[tuple[int, int], tuple[int, int, int, int], tuple[int, int, int, int]]
diff -rupN --no-dereference Pillow-11.3.0/src/PIL/PcfFontFile.py Pillow-11.3.0-new/src/PIL/PcfFontFile.py
--- Pillow-11.3.0/src/PIL/PcfFontFile.py 2025-07-01 09:41:24.000000000 +0200
-+++ Pillow-11.3.0-new/src/PIL/PcfFontFile.py 2026-07-08 00:44:43.678781879 +0200
++++ Pillow-11.3.0-new/src/PIL/PcfFontFile.py 2026-07-19 08:50:48.486342490 +0200
@@ -166,6 +166,7 @@ class PcfFontFile(FontFile.FontFile):
descent = i8(fp.read(1)) - 128
xsize = right - left
@@ -50,7 +50,7 @@ diff -rupN --no-dereference Pillow-11.3.0/src/PIL/PcfFontFile.py Pillow-11.3.0-n
return metrics
diff -rupN --no-dereference Pillow-11.3.0/Tests/test_font_bdf.py Pillow-11.3.0-new/Tests/test_font_bdf.py
--- Pillow-11.3.0/Tests/test_font_bdf.py 2025-07-01 09:41:24.000000000 +0200
-+++ Pillow-11.3.0-new/Tests/test_font_bdf.py 2026-07-08 00:44:43.679072737 +0200
++++ Pillow-11.3.0-new/Tests/test_font_bdf.py 2026-07-19 08:50:48.486608727 +0200
@@ -4,7 +4,7 @@ import io
import pytest
@@ -77,7 +77,7 @@ diff -rupN --no-dereference Pillow-11.3.0/Tests/test_font_bdf.py Pillow-11.3.0-n
with pytest.raises(SyntaxError):
diff -rupN --no-dereference Pillow-11.3.0/Tests/test_fontfile.py Pillow-11.3.0-new/Tests/test_fontfile.py
--- Pillow-11.3.0/Tests/test_fontfile.py 2025-07-01 09:41:24.000000000 +0200
-+++ Pillow-11.3.0-new/Tests/test_fontfile.py 2026-07-08 00:44:43.679324566 +0200
++++ Pillow-11.3.0-new/Tests/test_fontfile.py 2026-07-19 08:50:48.486848155 +0200
@@ -20,6 +20,13 @@ def test_compile() -> None:
assert font.ysize == 2
@@ -94,7 +94,7 @@ diff -rupN --no-dereference Pillow-11.3.0/Tests/test_fontfile.py Pillow-11.3.0-n
diff -rupN --no-dereference Pillow-11.3.0/Tests/test_font_pcf.py Pillow-11.3.0-new/Tests/test_font_pcf.py
--- Pillow-11.3.0/Tests/test_font_pcf.py 2025-07-01 09:41:24.000000000 +0200
-+++ Pillow-11.3.0-new/Tests/test_font_pcf.py 2026-07-08 00:44:43.679576479 +0200
++++ Pillow-11.3.0-new/Tests/test_font_pcf.py 2026-07-19 08:50:48.487107752 +0200
@@ -1,12 +1,13 @@
from __future__ import annotations
diff --git a/3cb854e8b2bab43f40e342e665f9340d861aa628.patch b/3cb854e8b2bab43f40e342e665f9340d861aa628.patch
index 8305006..96211e4 100644
--- a/3cb854e8b2bab43f40e342e665f9340d861aa628.patch
+++ b/3cb854e8b2bab43f40e342e665f9340d861aa628.patch
@@ -1,6 +1,6 @@
diff -rupN --no-dereference Pillow-11.3.0/src/PIL/FitsImagePlugin.py Pillow-11.3.0-new/src/PIL/FitsImagePlugin.py
--- Pillow-11.3.0/src/PIL/FitsImagePlugin.py 2025-07-01 09:41:24.000000000 +0200
-+++ Pillow-11.3.0-new/src/PIL/FitsImagePlugin.py 2026-07-08 00:44:43.401615913 +0200
++++ Pillow-11.3.0-new/src/PIL/FitsImagePlugin.py 2026-07-19 08:50:48.237448703 +0200
@@ -128,17 +128,18 @@ class FitsGzipDecoder(ImageFile.PyDecode
def decode(self, buffer: bytes | Image.SupportsArrayInterface) -> tuple[int, int]:
diff --git a/6a8de891fb00968e5ea79bfa84368ed90b3cfc1d.patch b/6a8de891fb00968e5ea79bfa84368ed90b3cfc1d.patch
new file mode 100644
index 0000000..a37aad0
--- /dev/null
+++ b/6a8de891fb00968e5ea79bfa84368ed90b3cfc1d.patch
@@ -0,0 +1,69 @@
+diff -rupN --no-dereference Pillow-11.3.0/src/map.c Pillow-11.3.0-new/src/map.c
+--- Pillow-11.3.0/src/map.c 2025-07-01 09:41:24.000000000 +0200
++++ Pillow-11.3.0-new/src/map.c 2026-07-19 08:50:49.003192816 +0200
+@@ -82,14 +82,16 @@ PyImaging_MapBuffer(PyObject *self, PyOb
+ return NULL;
+ }
+
+- if (stride <= 0) {
+- if (!strcmp(mode, "L") || !strcmp(mode, "P")) {
+- stride = xsize;
+- } else if (!strncmp(mode, "I;16", 4)) {
+- stride = xsize * 2;
+- } else {
+- stride = xsize * 4;
+- }
++ int pixelsize;
++ if (!strcmp(mode, "L") || !strcmp(mode, "P")) {
++ pixelsize = 1;
++ } else if (!strncmp(mode, "I;16", 4)) {
++ pixelsize = 2;
++ } else {
++ pixelsize = 4;
++ }
++ if (stride <= xsize * pixelsize) {
++ stride = xsize * pixelsize;
+ }
+
+ if (stride > 0 && ysize > PY_SSIZE_T_MAX / stride) {
+diff -rupN --no-dereference Pillow-11.3.0/Tests/test_file_mcidas.py Pillow-11.3.0-new/Tests/test_file_mcidas.py
+--- Pillow-11.3.0/Tests/test_file_mcidas.py 2025-07-01 09:41:24.000000000 +0200
++++ Pillow-11.3.0-new/Tests/test_file_mcidas.py 2026-07-19 08:50:49.004275380 +0200
+@@ -1,5 +1,8 @@
+ from __future__ import annotations
+
++import struct
++from pathlib import Path
++
+ import pytest
+
+ from PIL import Image, McIdasImagePlugin
+@@ -14,6 +17,28 @@ def test_invalid_file() -> None:
+ McIdasImagePlugin.McIdasImageFile(invalid_file)
+
+
++def test_undersized_stride(tmp_path: Path) -> None:
++ # A crafted area descriptor declares a row stride far smaller than a full
++ # row of pixels. Memory mapping must not lay out row pointers at that
++ # stride, which would read past the mapped buffer; the image is rejected
++ # instead of leaking memory or crashing.
++ words = [0] * 65
++ words[2] = 4 # magic: 00 00 00 00 00 00 00 04
++ words[9] = 1 # ysize
++ words[10] = 200000 # xsize -> a full row is 200000 bytes (mode "L")
++ words[11] = 1 # mode "L"
++ words[14] = 0 # zeroes the xsize term of the stride
++ words[15] = 1 # stride = 1 (much smaller than a row)
++ data = struct.pack("!64i", *words[1:65])
++
++ path = tmp_path / "undersized_stride.area"
++ path.write_bytes(data)
++
++ with Image.open(path) as im:
++ with pytest.raises(ValueError, match="buffer is not large enough"):
++ im.load()
++
++
+ def test_valid_file() -> None:
+ # Arrange
+ # https://ghrc.nsstc.nasa.gov/hydro/details/cmx3g8
diff --git a/853ece9ed20c5d80ffa22dce8698869a9da8bbfc.patch b/853ece9ed20c5d80ffa22dce8698869a9da8bbfc.patch
new file mode 100644
index 0000000..6296b3c
--- /dev/null
+++ b/853ece9ed20c5d80ffa22dce8698869a9da8bbfc.patch
@@ -0,0 +1,78 @@
+diff -rupN --no-dereference Pillow-11.3.0/src/PIL/ImageFilter.py Pillow-11.3.0-new/src/PIL/ImageFilter.py
+--- Pillow-11.3.0/src/PIL/ImageFilter.py 2025-07-01 09:41:24.000000000 +0200
++++ Pillow-11.3.0-new/src/PIL/ImageFilter.py 2026-07-19 08:50:48.761730315 +0200
+@@ -96,6 +96,12 @@ class RankFilter(Filter):
+ name = "Rank"
+
+ def __init__(self, size: int, rank: int) -> None:
++ if size % 2 == 0:
++ msg = "bad filter size"
++ raise ValueError(msg)
++ if rank < 0 or rank >= size * size:
++ msg = "bad rank value"
++ raise ValueError(msg)
+ self.size = size
+ self.rank = rank
+
+@@ -118,8 +124,8 @@ class MedianFilter(RankFilter):
+ name = "Median"
+
+ def __init__(self, size: int = 3) -> None:
+- self.size = size
+- self.rank = size * size // 2
++ rank = size * size // 2
++ super().__init__(size, rank)
+
+
+ class MinFilter(RankFilter):
+@@ -133,8 +139,8 @@ class MinFilter(RankFilter):
+ name = "Min"
+
+ def __init__(self, size: int = 3) -> None:
+- self.size = size
+- self.rank = 0
++ rank = 0
++ super().__init__(size, rank)
+
+
+ class MaxFilter(RankFilter):
+@@ -148,8 +154,8 @@ class MaxFilter(RankFilter):
+ name = "Max"
+
+ def __init__(self, size: int = 3) -> None:
+- self.size = size
+- self.rank = size * size - 1
++ rank = size * size - 1
++ super().__init__(size, rank)
+
+
+ class ModeFilter(Filter):
+diff -rupN --no-dereference Pillow-11.3.0/Tests/test_image_filter.py Pillow-11.3.0-new/Tests/test_image_filter.py
+--- Pillow-11.3.0/Tests/test_image_filter.py 2025-07-01 09:41:24.000000000 +0200
++++ Pillow-11.3.0-new/Tests/test_image_filter.py 2026-07-19 08:50:48.762092309 +0200
+@@ -136,11 +136,23 @@ def test_rankfilter_error(filter: ImageF
+
+
+ def test_rankfilter_properties() -> None:
+- rankfilter = ImageFilter.RankFilter(1, 2)
++ rankfilter = ImageFilter.RankFilter(3, 2)
+
+- assert rankfilter.size == 1
++ assert rankfilter.size == 3
+ assert rankfilter.rank == 2
+
++ with pytest.raises(ValueError, match="bad filter size"):
++ ImageFilter.RankFilter(2, 1)
++ with pytest.raises(ValueError, match="bad filter size"):
++ ImageFilter.MaxFilter(2)
++ with pytest.raises(ValueError, match="bad filter size"):
++ ImageFilter.MedianFilter(2)
++ with pytest.raises(ValueError, match="bad filter size"):
++ ImageFilter.MinFilter(2)
++
++ with pytest.raises(ValueError, match="bad rank value"):
++ ImageFilter.RankFilter(1, 1)
++
+
+ def test_builtinfilter_p() -> None:
+ builtin_filter = ImageFilter.BuiltinFilter()
diff --git a/88194166691b7b603529b8b036ab3ab9cedd2de4.patch b/88194166691b7b603529b8b036ab3ab9cedd2de4.patch
index 7983057..d130bb1 100644
--- a/88194166691b7b603529b8b036ab3ab9cedd2de4.patch
+++ b/88194166691b7b603529b8b036ab3ab9cedd2de4.patch
@@ -1,6 +1,6 @@
diff -rupN --no-dereference Pillow-11.3.0/src/PIL/ImageShow.py Pillow-11.3.0-new/src/PIL/ImageShow.py
--- Pillow-11.3.0/src/PIL/ImageShow.py 2025-07-01 09:41:24.000000000 +0200
-+++ Pillow-11.3.0-new/src/PIL/ImageShow.py 2026-07-08 00:44:43.819636918 +0200
++++ Pillow-11.3.0-new/src/PIL/ImageShow.py 2026-07-19 08:50:48.642211901 +0200
@@ -131,6 +131,7 @@ class WindowsViewer(Viewer):
options = {"compress_level": 1, "save_all": True}
@@ -11,7 +11,7 @@ diff -rupN --no-dereference Pillow-11.3.0/src/PIL/ImageShow.py Pillow-11.3.0-new
"&& ping -n 4 127.0.0.1 >NUL "
diff -rupN --no-dereference Pillow-11.3.0/Tests/test_imageshow.py Pillow-11.3.0-new/Tests/test_imageshow.py
--- Pillow-11.3.0/Tests/test_imageshow.py 2025-07-01 09:41:24.000000000 +0200
-+++ Pillow-11.3.0-new/Tests/test_imageshow.py 2026-07-08 00:44:43.820045572 +0200
++++ Pillow-11.3.0-new/Tests/test_imageshow.py 2026-07-19 08:50:48.642571321 +0200
@@ -107,6 +107,9 @@ def test_viewers(viewer: ImageShow.Viewe
except NotImplementedError:
pass
diff --git a/9000313cc5d4a31bdcdd6d7f0781101abab553aa.patch b/9000313cc5d4a31bdcdd6d7f0781101abab553aa.patch
index 3138bdf..ed9fe68 100644
--- a/9000313cc5d4a31bdcdd6d7f0781101abab553aa.patch
+++ b/9000313cc5d4a31bdcdd6d7f0781101abab553aa.patch
@@ -1,6 +1,6 @@
diff -rupN --no-dereference Pillow-11.3.0/src/decode.c Pillow-11.3.0-new/src/decode.c
--- Pillow-11.3.0/src/decode.c 2025-07-01 09:41:24.000000000 +0200
-+++ Pillow-11.3.0-new/src/decode.c 2026-07-08 00:44:43.254138224 +0200
++++ Pillow-11.3.0-new/src/decode.c 2026-07-19 08:50:48.110511586 +0200
@@ -186,7 +186,8 @@ _setimage(ImagingDecoderObject *decoder,
state->ysize = y1 - y0;
}
@@ -13,7 +13,7 @@ diff -rupN --no-dereference Pillow-11.3.0/src/decode.c Pillow-11.3.0-new/src/dec
return NULL;
diff -rupN --no-dereference Pillow-11.3.0/src/encode.c Pillow-11.3.0-new/src/encode.c
--- Pillow-11.3.0/src/encode.c 2025-07-01 09:41:24.000000000 +0200
-+++ Pillow-11.3.0-new/src/encode.c 2026-07-08 00:44:43.254804101 +0200
++++ Pillow-11.3.0-new/src/encode.c 2026-07-19 08:50:48.110954189 +0200
@@ -254,7 +254,8 @@ _setimage(ImagingEncoderObject *encoder,
state->ysize = y1 - y0;
}
diff --git a/cce3bdb867c77a3420261ed1bfdb6b0787ec8fc1.patch b/cce3bdb867c77a3420261ed1bfdb6b0787ec8fc1.patch
new file mode 100644
index 0000000..4899d5a
--- /dev/null
+++ b/cce3bdb867c77a3420261ed1bfdb6b0787ec8fc1.patch
@@ -0,0 +1,45 @@
+diff -rupN --no-dereference Pillow-11.3.0/src/libImaging/Filter.c Pillow-11.3.0-new/src/libImaging/Filter.c
+--- Pillow-11.3.0/src/libImaging/Filter.c 2025-07-01 09:41:24.000000000 +0200
++++ Pillow-11.3.0-new/src/libImaging/Filter.c 2026-07-19 08:50:48.880125080 +0200
+@@ -59,6 +59,12 @@ ImagingExpand(Imaging imIn, int xmargin,
+ if (xmargin < 0 && ymargin < 0) {
+ return (Imaging)ImagingError_ValueError("bad kernel size");
+ }
++ if (xmargin > INT_MAX / (xmargin * (int)sizeof(FLOAT32))) {
++ return (Imaging)ImagingError_ValueError("filter size too large");
++ }
++ if (ymargin > INT_MAX / (ymargin * (int)sizeof(FLOAT32))) {
++ return (Imaging)ImagingError_ValueError("filter size too large");
++ }
+
+ imOut = ImagingNewDirty(
+ imIn->mode, imIn->xsize + 2 * xmargin, imIn->ysize + 2 * ymargin
+diff -rupN --no-dereference Pillow-11.3.0/src/PIL/ImageFilter.py Pillow-11.3.0-new/src/PIL/ImageFilter.py
+--- Pillow-11.3.0/src/PIL/ImageFilter.py 2026-07-19 08:50:48.874193964 +0200
++++ Pillow-11.3.0-new/src/PIL/ImageFilter.py 2026-07-19 08:50:48.879504441 +0200
+@@ -99,6 +99,9 @@ class RankFilter(Filter):
+ if size % 2 == 0:
+ msg = "bad filter size"
+ raise ValueError(msg)
++ if size * size * 4 > (2**31 - 1):
++ msg = "filter size too large"
++ raise ValueError(msg)
+ if rank < 0 or rank >= size * size:
+ msg = "bad rank value"
+ raise ValueError(msg)
+diff -rupN --no-dereference Pillow-11.3.0/Tests/test_image_filter.py Pillow-11.3.0-new/Tests/test_image_filter.py
+--- Pillow-11.3.0/Tests/test_image_filter.py 2026-07-19 08:50:48.875524163 +0200
++++ Pillow-11.3.0-new/Tests/test_image_filter.py 2026-07-19 08:50:48.879776512 +0200
+@@ -150,6 +150,12 @@ def test_rankfilter_properties() -> None
+ with pytest.raises(ValueError, match="bad filter size"):
+ ImageFilter.MinFilter(2)
+
++ with pytest.raises(ValueError, match="filter size too large"):
++ ImageFilter.RankFilter(23171, 1)
++ im = Image.new("1", (1, 1))
++ with pytest.raises(ValueError, match="filter size too large"):
++ im.im.expand(23171)
++
+ with pytest.raises(ValueError, match="bad rank value"):
+ ImageFilter.RankFilter(1, 1)
+
diff --git a/f39b0ae6624eb2d7c5c5d651d9bb5fdbd96a8675.patch b/f39b0ae6624eb2d7c5c5d651d9bb5fdbd96a8675.patch
index b4921e4..e0e1693 100644
--- a/f39b0ae6624eb2d7c5c5d651d9bb5fdbd96a8675.patch
+++ b/f39b0ae6624eb2d7c5c5d651d9bb5fdbd96a8675.patch
@@ -1,6 +1,6 @@
diff -rupN --no-dereference Pillow-11.3.0/src/PIL/GdImageFile.py Pillow-11.3.0-new/src/PIL/GdImageFile.py
--- Pillow-11.3.0/src/PIL/GdImageFile.py 2025-07-01 09:41:24.000000000 +0200
-+++ Pillow-11.3.0-new/src/PIL/GdImageFile.py 2026-07-08 00:44:43.541134873 +0200
++++ Pillow-11.3.0-new/src/PIL/GdImageFile.py 2026-07-19 08:50:48.364244777 +0200
@@ -29,7 +29,7 @@ from __future__ import annotations
from typing import IO
@@ -20,7 +20,7 @@ diff -rupN --no-dereference Pillow-11.3.0/src/PIL/GdImageFile.py Pillow-11.3.0-n
true_color_offset = 2 if true_color else 0
diff -rupN --no-dereference Pillow-11.3.0/Tests/test_file_gd.py Pillow-11.3.0-new/Tests/test_file_gd.py
--- Pillow-11.3.0/Tests/test_file_gd.py 2025-07-01 09:41:24.000000000 +0200
-+++ Pillow-11.3.0-new/Tests/test_file_gd.py 2026-07-08 00:44:43.541726407 +0200
++++ Pillow-11.3.0-new/Tests/test_file_gd.py 2026-07-19 08:50:48.364543894 +0200
@@ -2,7 +2,7 @@ from __future__ import annotations
import pytest
diff --git a/pillow_mingw.patch b/pillow_mingw.patch
index 6e67d7d..0fd12bc 100644
--- a/pillow_mingw.patch
+++ b/pillow_mingw.patch
@@ -1,6 +1,6 @@
diff -rupN --no-dereference Pillow-11.3.0/setup.py Pillow-11.3.0-new/setup.py
--- Pillow-11.3.0/setup.py 2025-07-01 09:41:24.000000000 +0200
-+++ Pillow-11.3.0-new/setup.py 2026-07-08 00:44:43.116613779 +0200
++++ Pillow-11.3.0-new/setup.py 2026-07-19 08:50:47.973345255 +0200
@@ -144,7 +144,7 @@ class RequiredDependencyException(Except
pass
@@ -66,7 +66,7 @@ diff -rupN --no-dereference Pillow-11.3.0/setup.py Pillow-11.3.0-new/setup.py
build_ext.build_extensions(self)
diff -rupN --no-dereference Pillow-11.3.0/src/libImaging/ImPlatform.h Pillow-11.3.0-new/src/libImaging/ImPlatform.h
--- Pillow-11.3.0/src/libImaging/ImPlatform.h 2025-07-01 09:41:24.000000000 +0200
-+++ Pillow-11.3.0-new/src/libImaging/ImPlatform.h 2026-07-08 00:44:43.117079889 +0200
++++ Pillow-11.3.0-new/src/libImaging/ImPlatform.h 2026-07-19 08:50:47.973855846 +0200
@@ -29,7 +29,7 @@
#if defined(_WIN32) || defined(__CYGWIN__) /* WIN */
@@ -78,7 +78,7 @@ diff -rupN --no-dereference Pillow-11.3.0/src/libImaging/ImPlatform.h Pillow-11.
#undef _WIN64
diff -rupN --no-dereference Pillow-11.3.0/src/Tk/tkImaging.c Pillow-11.3.0-new/src/Tk/tkImaging.c
--- Pillow-11.3.0/src/Tk/tkImaging.c 2025-07-01 09:41:24.000000000 +0200
-+++ Pillow-11.3.0-new/src/Tk/tkImaging.c 2026-07-08 00:44:43.117386822 +0200
++++ Pillow-11.3.0-new/src/Tk/tkImaging.c 2026-07-19 08:50:47.974163609 +0200
@@ -321,7 +321,7 @@ load_tkinter_funcs(void) {
/* Allocate module handlers array */
diff --git a/python-pillow.spec b/python-pillow.spec
index 5b82d78..a7628b2 100644
--- a/python-pillow.spec
+++ b/python-pillow.spec
@@ -18,7 +18,7 @@
Name: python-%{srcname}
Version: 11.3.0
-Release: 9%{?dist}
+Release: 10%{?dist}
Summary: Python image processing library
# License: see http://www.pythonware.com/products/pil/license.htm
@@ -38,6 +38,12 @@ Patch3: https://github.com/python-pillow/Pillow/commit/f39b0ae6624eb2d7c
Patch4: https://github.com/python-pillow/Pillow/commit/0a263e6264aa5399988d9acd3bbfbca2ca3ec77d.patch
# Backport fix for CVE-2026-55798
Patch5: https://github.com/python-pillow/Pillow/commit/88194166691b7b603529b8b036ab3ab9cedd2de4.patch
+# Dependent patch for applying fix for CVE-2026-59197
+Patch6: https://github.com/python-pillow/Pillow/commit/853ece9ed20c5d80ffa22dce8698869a9da8bbfc.patch
+# Backport fix for CVE-2026-59197
+Patch7: https://github.com/python-pillow/Pillow/commit/cce3bdb867c77a3420261ed1bfdb6b0787ec8fc1.patch
+# Backport fix for CVE-2026-54058
+Patch8: https://github.com/python-pillow/Pillow/commit/6a8de891fb00968e5ea79bfa84368ed90b3cfc1d.patch
BuildRequires: freetype-devel
BuildRequires: gcc
@@ -316,6 +322,9 @@ popd
%changelog
+* Sun Jul 19 2026 Sandro Mani <manisandro@gmail.com> - 11.3.0-10
+- Backport fixes for CVE-2026-59197 and CVE-2026-54058
+
* Tue Jul 07 2026 Sandro Mani <manisandro@gmail.com> - 11.3.0-9
- Backport fixes for CVE-2026-55380, CVE-2026-54060, CVE-2026-54059,
CVE-2026-55379, CVE-2026-55798
reply other threads:[~2026-07-19 7:03 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=178444459615.1.15372680259396763357.rpms-python-pillow-0e34cf3307cd@fedoraproject.org \
--to=manisandro@gmail.com \
--cc=git-commits@fedoraproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox