Bug#1135877: trixie-pu: package python3.13/3.13.5-2+deb13u2

2026-05-12 Thread Arnaud Rebillout

On 08/05/2026 01:53, Moritz Mühlenhoff wrote:

CVE-2026-4786 is only an issue if for CVE-2026-4519 is incompletely fixed,
but my patches for for CVE-2026-4519 contain the full fix compromised
of three upstream patches, so 3.13 was never affected by CVE-2026-4786
in trixie.

I'd suggest to simply do the same for 3.11.


Ack, thanks for the explanation.

I did the same for 3.11, and I just filed the upload request at:

https://bugs.debian.org/1136382

-- Arnaud



Bug#1135877: trixie-pu: package python3.13/3.13.5-2+deb13u2

2026-05-07 Thread Moritz Mühlenhoff
On Thu, May 07, 2026 at 08:15:56PM +0100, Adam D. Barratt wrote:
> Control: tags -1 + confirmed
> 
> On Wed, 2026-05-06 at 22:50 +0200, Moritz Muehlenhoff wrote:
> > This is a followup update to the +deb13u1 update already
> > accepeted to trixie-proposed-updates a few weeks ago,
> > which fixes a more low severity security issues, which
> > have since then been backported to the upstream 3.13
> > branch.
> 
> Please go ahead.

Uploaded, thanks!

Cheers,
Moritz



Bug#1135877: trixie-pu: package python3.13/3.13.5-2+deb13u2

2026-05-07 Thread Adam D. Barratt
Control: tags -1 + confirmed

On Wed, 2026-05-06 at 22:50 +0200, Moritz Muehlenhoff wrote:
> This is a followup update to the +deb13u1 update already
> accepeted to trixie-proposed-updates a few weeks ago,
> which fixes a more low severity security issues, which
> have since then been backported to the upstream 3.13
> branch.

Please go ahead.

Regards,

Adam



Bug#1135877: trixie-pu: package python3.13/3.13.5-2+deb13u2

2026-05-07 Thread Moritz Mühlenhoff
Am Thu, May 07, 2026 at 04:22:40PM +0700 schrieb Arnaud Rebillout:
> Hello Moritz,
> 
> I intend to propose a similar upload for bookworm, so I was looking at your
> debdiff first.

Nice!

> May I ask: why not fixing CVE-2026-4786 as well? It is marked as fixed in
> the tracker, but it's only because it is introduced by the fix
> for CVE-2026-4519, which is not yet in trixie (it's in your debdiff here).

CVE-2026-4786 is only an issue if for CVE-2026-4519 is incompletely fixed,
but my patches for for CVE-2026-4519 contain the full fix compromised
of three upstream patches, so 3.13 was never affected by CVE-2026-4786
in trixie.

I'd suggest to simply do the same for 3.11.

Cheers,
Moritz



Bug#1135877: trixie-pu: package python3.13/3.13.5-2+deb13u2

2026-05-07 Thread Arnaud Rebillout

Hello Moritz,

I intend to propose a similar upload for bookworm, so I was looking at 
your debdiff first.


May I ask: why not fixing CVE-2026-4786 as well? It is marked as fixed 
in the tracker, but it's only because it is introduced by the fix 
for CVE-2026-4519, which is not yet in trixie (it's in your debdiff here).


Best,

Arnaud

On 07/05/2026 03:50, Moritz Muehlenhoff wrote:

Package: release.debian.org
Severity: normal
Tags: trixie
X-Debbugs-Cc: [email protected], [email protected]
Control: affects -1 + src:python3.13
User: [email protected]
Usertags: pu

This is a followup update to the +deb13u1 update already
accepeted to trixie-proposed-updates a few weeks ago,
which fixes a more low severity security issues, which
have since then been backported to the upstream 3.13
branch.

Tests were fine and everything looks in order in the tests
triggered in debusine as well. The debdiff below is relative
to the version already on trixie-p-u.

Cheers,
 Moritz

diff -Nru python3.13-3.13.5/debian/changelog python3.13-3.13.5/debian/changelog
--- python3.13-3.13.5/debian/changelog  2026-04-06 14:24:14.0 +0200
+++ python3.13-3.13.5/debian/changelog  2026-05-05 23:05:52.0 +0200
@@ -1,3 +1,14 @@
+python3.13 (3.13.5-2+deb13u2) trixie; urgency=medium
+
+  * CVE-2026-3446
+  * CVE-2026-4224
+  * CVE-2026-3644
+  * CVE-2026-4519
+  * CVE-2026-6019 (Closes: #1135116)
+  * CVE-2026-6100
+
+ -- Moritz Mühlenhoff   Tue, 05 May 2026 23:05:52 +0200
+
  python3.13 (3.13.5-2+deb13u1) trixie; urgency=medium
  
* CVE-2025-11468 (Closes: #1126787)

diff -Nru python3.13-3.13.5/debian/patches/CVE-2026-3446.patch 
python3.13-3.13.5/debian/patches/CVE-2026-3446.patch
--- python3.13-3.13.5/debian/patches/CVE-2026-3446.patch1970-01-01 
01:00:00.0 +0100
+++ python3.13-3.13.5/debian/patches/CVE-2026-3446.patch2026-05-05 
14:21:14.0 +0200
@@ -0,0 +1,209 @@
+From 1f9958f909c1b41a4ffc0b613ef8ec8fa5e7c474 Mon Sep 17 00:00:00 2001
+From: "Miss Islington (bot)"
+ <[email protected]>
+Date: Tue, 24 Mar 2026 00:52:20 +0100
+Subject: [PATCH] [3.13] gh-145264: Do not ignore excess Base64 data after the
+ first padded quad (GH-145267) (GH-146326) (GH-146348)
+
+--- python3.13-3.13.5.orig/Lib/test/test_binascii.py
 python3.13-3.13.5/Lib/test/test_binascii.py
+@@ -143,17 +143,16 @@ class BinASCIITest(unittest.TestCase):
+ _assertRegexTemplate(r'(?i)Excess padding', data, 
non_strict_mode_expected_result)
+
+ # Test excess data exceptions
+-assertExcessData(b'ab==a', b'i')
+-assertExcessData(b'ab===', b'i')
+-assertExcessData(b'ab', b'i')
+-assertExcessData(b'ab==:', b'i')
+-assertExcessData(b'abc=a', b'i\xb7')
+-assertExcessData(b'abc=:', b'i\xb7')
+-assertExcessData(b'ab==\n', b'i')
+-assertExcessData(b'abc==', b'i\xb7')
+-assertExcessData(b'abc===', b'i\xb7')
+-assertExcessData(b'abc', b'i\xb7')
+-assertExcessData(b'abc=', b'i\xb7')
++assertExcessPadding(b'ab===', b'i')
++assertExcessPadding(b'ab', b'i')
++assertNonBase64Data(b'ab==:', b'i')
++assertExcessData(b'abc=a', b'i\xb7\x1a')
++assertNonBase64Data(b'abc=:', b'i\xb7')
++assertNonBase64Data(b'ab==\n', b'i')
++assertExcessPadding(b'abc==', b'i\xb7')
++assertExcessPadding(b'abc===', b'i\xb7')
++assertExcessPadding(b'abc', b'i\xb7')
++assertExcessPadding(b'abc=', b'i\xb7')
+
+ # Test non-base64 data exceptions
+ assertNonBase64Data(b'\nab==', b'i')
+@@ -175,6 +174,20 @@ class BinASCIITest(unittest.TestCase):
+ assertExcessPadding(b'abcd', b'i\xb7\x1d')
+ assertExcessPadding(b'abcd=', b'i\xb7\x1d')
+
++def test_base64_excess_data(self):
++# Test excess data exceptions
++def assertExcessData(data, expected):
++assert_regex = r'(?i)Excess data'
++data = self.type2test(data)
++with self.assertRaisesRegex(binascii.Error, assert_regex):
++binascii.a2b_base64(data, strict_mode=True)
++self.assertEqual(binascii.a2b_base64(data, strict_mode=False),
++ expected)
++self.assertEqual(binascii.a2b_base64(data), expected)
++
++assertExcessData(b'ab==c=', b'i\xb7')
++assertExcessData(b'ab==cd', b'i\xb7\x1d')
++assertExcessData(b'abc=d', b'i\xb7\x1d')
+
+ def test_base64errors(self):
+ # Test base64 with invalid padding
+--- python3.13-3.13.5.orig/Modules/binascii.c
 python3.13-3.13.5/Modules/binascii.c
+@@ -383,7 +383,6 @@ binascii_a2b_base64_impl(PyObject *modul
+ const unsigned char *ascii_data = data->buf;
+ size_t ascii_len = data->len;
+ binascii_state *state = NULL;
+-char padding_started = 0;
+
+ /* Allocate the buffer */
+ Py_ssize_t bin_len =

Bug#1135877: trixie-pu: package python3.13/3.13.5-2+deb13u2

2026-05-06 Thread Moritz Muehlenhoff
Package: release.debian.org
Severity: normal
Tags: trixie
X-Debbugs-Cc: [email protected], [email protected]
Control: affects -1 + src:python3.13
User: [email protected]
Usertags: pu

This is a followup update to the +deb13u1 update already
accepeted to trixie-proposed-updates a few weeks ago,
which fixes a more low severity security issues, which
have since then been backported to the upstream 3.13
branch.

Tests were fine and everything looks in order in the tests
triggered in debusine as well. The debdiff below is relative
to the version already on trixie-p-u.

Cheers,
Moritz

diff -Nru python3.13-3.13.5/debian/changelog python3.13-3.13.5/debian/changelog
--- python3.13-3.13.5/debian/changelog  2026-04-06 14:24:14.0 +0200
+++ python3.13-3.13.5/debian/changelog  2026-05-05 23:05:52.0 +0200
@@ -1,3 +1,14 @@
+python3.13 (3.13.5-2+deb13u2) trixie; urgency=medium
+
+  * CVE-2026-3446
+  * CVE-2026-4224
+  * CVE-2026-3644
+  * CVE-2026-4519
+  * CVE-2026-6019 (Closes: #1135116)
+  * CVE-2026-6100
+
+ -- Moritz Mühlenhoff   Tue, 05 May 2026 23:05:52 +0200
+
 python3.13 (3.13.5-2+deb13u1) trixie; urgency=medium
 
   * CVE-2025-11468 (Closes: #1126787)
diff -Nru python3.13-3.13.5/debian/patches/CVE-2026-3446.patch 
python3.13-3.13.5/debian/patches/CVE-2026-3446.patch
--- python3.13-3.13.5/debian/patches/CVE-2026-3446.patch1970-01-01 
01:00:00.0 +0100
+++ python3.13-3.13.5/debian/patches/CVE-2026-3446.patch2026-05-05 
14:21:14.0 +0200
@@ -0,0 +1,209 @@
+From 1f9958f909c1b41a4ffc0b613ef8ec8fa5e7c474 Mon Sep 17 00:00:00 2001
+From: "Miss Islington (bot)"
+ <[email protected]>
+Date: Tue, 24 Mar 2026 00:52:20 +0100
+Subject: [PATCH] [3.13] gh-145264: Do not ignore excess Base64 data after the
+ first padded quad (GH-145267) (GH-146326) (GH-146348)
+
+--- python3.13-3.13.5.orig/Lib/test/test_binascii.py
 python3.13-3.13.5/Lib/test/test_binascii.py
+@@ -143,17 +143,16 @@ class BinASCIITest(unittest.TestCase):
+ _assertRegexTemplate(r'(?i)Excess padding', data, 
non_strict_mode_expected_result)
+ 
+ # Test excess data exceptions
+-assertExcessData(b'ab==a', b'i')
+-assertExcessData(b'ab===', b'i')
+-assertExcessData(b'ab', b'i')
+-assertExcessData(b'ab==:', b'i')
+-assertExcessData(b'abc=a', b'i\xb7')
+-assertExcessData(b'abc=:', b'i\xb7')
+-assertExcessData(b'ab==\n', b'i')
+-assertExcessData(b'abc==', b'i\xb7')
+-assertExcessData(b'abc===', b'i\xb7')
+-assertExcessData(b'abc', b'i\xb7')
+-assertExcessData(b'abc=', b'i\xb7')
++assertExcessPadding(b'ab===', b'i')
++assertExcessPadding(b'ab', b'i')
++assertNonBase64Data(b'ab==:', b'i')
++assertExcessData(b'abc=a', b'i\xb7\x1a')
++assertNonBase64Data(b'abc=:', b'i\xb7')
++assertNonBase64Data(b'ab==\n', b'i')
++assertExcessPadding(b'abc==', b'i\xb7')
++assertExcessPadding(b'abc===', b'i\xb7')
++assertExcessPadding(b'abc', b'i\xb7')
++assertExcessPadding(b'abc=', b'i\xb7')
+ 
+ # Test non-base64 data exceptions
+ assertNonBase64Data(b'\nab==', b'i')
+@@ -175,6 +174,20 @@ class BinASCIITest(unittest.TestCase):
+ assertExcessPadding(b'abcd', b'i\xb7\x1d')
+ assertExcessPadding(b'abcd=', b'i\xb7\x1d')
+ 
++def test_base64_excess_data(self):
++# Test excess data exceptions
++def assertExcessData(data, expected):
++assert_regex = r'(?i)Excess data'
++data = self.type2test(data)
++with self.assertRaisesRegex(binascii.Error, assert_regex):
++binascii.a2b_base64(data, strict_mode=True)
++self.assertEqual(binascii.a2b_base64(data, strict_mode=False),
++ expected)
++self.assertEqual(binascii.a2b_base64(data), expected)
++
++assertExcessData(b'ab==c=', b'i\xb7')
++assertExcessData(b'ab==cd', b'i\xb7\x1d')
++assertExcessData(b'abc=d', b'i\xb7\x1d')
+ 
+ def test_base64errors(self):
+ # Test base64 with invalid padding
+--- python3.13-3.13.5.orig/Modules/binascii.c
 python3.13-3.13.5/Modules/binascii.c
+@@ -383,7 +383,6 @@ binascii_a2b_base64_impl(PyObject *modul
+ const unsigned char *ascii_data = data->buf;
+ size_t ascii_len = data->len;
+ binascii_state *state = NULL;
+-char padding_started = 0;
+ 
+ /* Allocate the buffer */
+ Py_ssize_t bin_len = ((ascii_len+3)/4)*3; /* Upper bound, corrected later 
*/
+@@ -394,14 +393,6 @@ binascii_a2b_base64_impl(PyObject *modul
+ return NULL;
+ unsigned char *bin_data_start = bin_data;
+ 
+-if (strict_mode && ascii_len > 0 && ascii_data[0] == '=') {
+-state = get_binascii_state(module);
+-if (state) {
+-PyErr_SetString(state->Error, "Leading paddin