* [OE-core][PATCH v3] python-urllib3: Backport fix for CVE-2026-21441
@ 2026-01-28 13:16 adarsh.jagadish.kamini
2026-01-29 17:44 ` [OE-core][scarthgap][PATCH " Mathieu Dubois-Briand
0 siblings, 1 reply; 3+ messages in thread
From: adarsh.jagadish.kamini @ 2026-01-28 13:16 UTC (permalink / raw)
To: openembedded-core; +Cc: Adarsh Jagadish Kamini
From: Adarsh Jagadish Kamini <adarsh.jagadish.kamini@est.tech>
Signed-off-by: Adarsh Jagadish Kamini <adarsh.jagadish.kamini@est.tech>
---
.../python3-urllib3/CVE-2026-21441.patch | 105 ++++++++++++++++++
.../python/python3-urllib3_2.2.2.bb | 1 +
2 files changed, 106 insertions(+)
create mode 100644 meta/recipes-devtools/python/python3-urllib3/CVE-2026-21441.patch
diff --git a/meta/recipes-devtools/python/python3-urllib3/CVE-2026-21441.patch b/meta/recipes-devtools/python/python3-urllib3/CVE-2026-21441.patch
new file mode 100644
index 0000000000..16af67af31
--- /dev/null
+++ b/meta/recipes-devtools/python/python3-urllib3/CVE-2026-21441.patch
@@ -0,0 +1,105 @@
+From 686d2bdd4affd3c86e605f54a72afe53c920f72f Mon Sep 17 00:00:00 2001
+From: Illia Volochii <illia.volochii@gmail.com>
+Date: Wed, 7 Jan 2026 18:07:30 +0200
+Subject: [PATCH] Backport fix CVE-2026-21441 python urllib3
+
+Original commit: 8864ac407bba8607950025e0979c4c69bc7abc7b
+Original-author: Illia Volochii <illia.volochii@gmail.com>
+
+Bugfixes
+--------
+
+- Fixed a high-severity security issue where decompression-bomb safeguards of
+ the streaming API were bypassed when HTTP redirects were followed.
+ (`GHSA-38jv-5279-wg99 <https://github.com/urllib3/urllib3/security/advisories/GHSA-38jv-5279-wg99>`__)
+
+* Stop decoding response content during redirects needlessly
+
+* Rename the new query parameter
+
+* Add a changelog entry
+
+Fixes CVE-2026-21441
+CVE: CVE-2026-21441
+
+Upstream-Status: Backport [https://github.com/urllib3/urllib3/commit/8864ac407bba8607950025e0979c4c69bc7abc7b]
+
+Signed-off-by: Adarsh Jagadish Kamini <adarsh.jagadish.kamini@est.tech>
+---
+ dummyserver/app.py | 8 +++++++-
+ src/urllib3/response.py | 6 +++++-
+ test/with_dummyserver/test_connectionpool.py | 19 +++++++++++++++++++
+ 3 files changed, 31 insertions(+), 2 deletions(-)
+
+diff --git a/dummyserver/app.py b/dummyserver/app.py
+index 9fc9d1b7..c4978152 100644
+--- a/dummyserver/app.py
++++ b/dummyserver/app.py
+@@ -233,10 +233,16 @@ async def redirect() -> ResponseReturnValue:
+ values = await request.values
+ target = values.get("target", "/")
+ status = values.get("status", "303 See Other")
++ compressed = values.get("compressed") == "true"
+ status_code = status.split(" ")[0]
+
+ headers = [("Location", target)]
+- return await make_response("", status_code, headers)
++ if compressed:
++ headers.append(("Content-Encoding", "gzip"))
++ data = gzip.compress(b"foo")
++ else:
++ data = b""
++ return await make_response(data, status_code, headers)
+
+
+ @hypercorn_app.route("/redirect_after")
+diff --git a/src/urllib3/response.py b/src/urllib3/response.py
+index a0273d65..909da62b 100644
+--- a/src/urllib3/response.py
++++ b/src/urllib3/response.py
+@@ -646,7 +646,11 @@ class HTTPResponse(BaseHTTPResponse):
+ Unread data in the HTTPResponse connection blocks the connection from being released back to the pool.
+ """
+ try:
+- self.read()
++ self.read(
++ # Do not spend resources decoding the content unless
++ # decoding has already been initiated.
++ decode_content=self._has_decoded_content,
++ )
+ except (HTTPError, OSError, BaseSSLError, HTTPException):
+ pass
+
+diff --git a/test/with_dummyserver/test_connectionpool.py b/test/with_dummyserver/test_connectionpool.py
+index 4fbe6a4f..ebcdf9bf 100644
+--- a/test/with_dummyserver/test_connectionpool.py
++++ b/test/with_dummyserver/test_connectionpool.py
+@@ -480,6 +480,25 @@ class TestConnectionPool(HypercornDummyServerTestCase):
+ assert r.status == 200
+ assert r.data == b"Dummy server!"
+
++ @mock.patch("urllib3.response.GzipDecoder.decompress")
++ def test_no_decoding_with_redirect_when_preload_disabled(
++ self, gzip_decompress: mock.MagicMock
++ ) -> None:
++ """
++ Test that urllib3 does not attempt to decode a gzipped redirect
++ response when `preload_content` is set to `False`.
++ """
++ with HTTPConnectionPool(self.host, self.port) as pool:
++ # Three requests are expected: two redirects and one final / 200 OK.
++ response = pool.request(
++ "GET",
++ "/redirect",
++ fields={"target": "/redirect?compressed=true", "compressed": "true"},
++ preload_content=False,
++ )
++ assert response.status == 200
++ gzip_decompress.assert_not_called()
++
+ def test_303_redirect_makes_request_lose_body(self) -> None:
+ with HTTPConnectionPool(self.host, self.port) as pool:
+ response = pool.request(
+--
+2.44.0
+
diff --git a/meta/recipes-devtools/python/python3-urllib3_2.2.2.bb b/meta/recipes-devtools/python/python3-urllib3_2.2.2.bb
index 620927322a..f6ac8f89ca 100644
--- a/meta/recipes-devtools/python/python3-urllib3_2.2.2.bb
+++ b/meta/recipes-devtools/python/python3-urllib3_2.2.2.bb
@@ -11,6 +11,7 @@ SRC_URI += " \
file://CVE-2025-50181.patch \
file://CVE-2025-66418.patch \
file://CVE-2025-66471.patch \
+ file://CVE-2026-21441.patch \
"
RDEPENDS:${PN} += "\
--
2.34.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [OE-core][scarthgap][PATCH v3] python-urllib3: Backport fix for CVE-2026-21441
2026-01-28 13:16 [OE-core][PATCH v3] python-urllib3: Backport fix for CVE-2026-21441 adarsh.jagadish.kamini
@ 2026-01-29 17:44 ` Mathieu Dubois-Briand
2026-01-30 7:36 ` adarsh.jagadish.kamini
0 siblings, 1 reply; 3+ messages in thread
From: Mathieu Dubois-Briand @ 2026-01-29 17:44 UTC (permalink / raw)
To: adarsh.jagadish.kamini, openembedded-core; +Cc: Yoann Congal
On Wed Jan 28, 2026 at 2:16 PM CET, adarsh.jagadish.kamini wrote:
> From: Adarsh Jagadish Kamini <adarsh.jagadish.kamini@est.tech>
>
> Signed-off-by: Adarsh Jagadish Kamini <adarsh.jagadish.kamini@est.tech>
> ---
Hi Adarsh,
Thanks for your patch.
Based on urllib version, I suspect this patch is not for master but for
the Scarthgap branch, is that right?
Adding Yoann in copy, so he can handle it.
Please make sure to add [scarthgap] tag in the mail subject for such a
patch, as described here:
https://docs.yoctoproject.org/dev/contributor-guide/submit-changes.html#submitting-changes-to-stable-release-branches
Thanks,
Mathieu
--
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [OE-core][scarthgap][PATCH v3] python-urllib3: Backport fix for CVE-2026-21441
2026-01-29 17:44 ` [OE-core][scarthgap][PATCH " Mathieu Dubois-Briand
@ 2026-01-30 7:36 ` adarsh.jagadish.kamini
0 siblings, 0 replies; 3+ messages in thread
From: adarsh.jagadish.kamini @ 2026-01-30 7:36 UTC (permalink / raw)
To: Mathieu Dubois-Briand, openembedded-core@lists.openembedded.org
Cc: Yoann Congal
[-- Attachment #1: Type: text/plain, Size: 1264 bytes --]
Hi Mathieu,
I will now send a v4 patch for scarthgap branch.
Thanks,
Adarsh
________________________________
From: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Sent: Thursday, January 29, 2026 6:44 PM
To: Adarsh Jagadish Kamini <adarsh.jagadish.kamini@est.tech>; openembedded-core@lists.openembedded.org <openembedded-core@lists.openembedded.org>
Cc: Yoann Congal <yoann.congal@smile.fr>
Subject: Re: [OE-core][scarthgap][PATCH v3] python-urllib3: Backport fix for CVE-2026-21441
On Wed Jan 28, 2026 at 2:16 PM CET, adarsh.jagadish.kamini wrote:
> From: Adarsh Jagadish Kamini <adarsh.jagadish.kamini@est.tech>
>
> Signed-off-by: Adarsh Jagadish Kamini <adarsh.jagadish.kamini@est.tech>
> ---
Hi Adarsh,
Thanks for your patch.
Based on urllib version, I suspect this patch is not for master but for
the Scarthgap branch, is that right?
Adding Yoann in copy, so he can handle it.
Please make sure to add [scarthgap] tag in the mail subject for such a
patch, as described here:
https://docs.yoctoproject.org/dev/contributor-guide/submit-changes.html#submitting-changes-to-stable-release-branches
Thanks,
Mathieu
--
Mathieu Dubois-Briand, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
[-- Attachment #2: Type: text/html, Size: 2543 bytes --]
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-01-30 7:41 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-01-28 13:16 [OE-core][PATCH v3] python-urllib3: Backport fix for CVE-2026-21441 adarsh.jagadish.kamini
2026-01-29 17:44 ` [OE-core][scarthgap][PATCH " Mathieu Dubois-Briand
2026-01-30 7:36 ` adarsh.jagadish.kamini
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox