diff --git a/CVE-2023-52425-libexpat-2.6.0-backport.patch b/CVE-2023-52425-libexpat-2.6.0-backport.patch
index 2c248fb..409e162 100644
--- a/CVE-2023-52425-libexpat-2.6.0-backport.patch
+++ b/CVE-2023-52425-libexpat-2.6.0-backport.patch
@@ -6,10 +6,10 @@
Lib/test/test_xml_etree.py | 12 ------------
5 files changed, 37 insertions(+), 44 deletions(-)
-Index: Python-3.11.12/Lib/test/support/__init__.py
+Index: Python-3.11.14/Lib/test/support/__init__.py
===================================================================
---- Python-3.11.12.orig/Lib/test/support/__init__.py 2025-04-11 10:52:43.191010503 +0200
-+++ Python-3.11.12/Lib/test/support/__init__.py 2025-04-11 10:52:44.802161741 +0200
+--- Python-3.11.14.orig/Lib/test/support/__init__.py 2025-11-15 19:15:08.449938538 +0100
++++ Python-3.11.14/Lib/test/support/__init__.py 2025-11-15 19:15:12.859120260 +0100
@@ -8,6 +8,7 @@
import functools
import os
@@ -27,7 +27,7 @@ Index: Python-3.11.12/Lib/test/support/__init__.py
]
-@@ -2244,6 +2245,17 @@
+@@ -2279,6 +2280,17 @@
}
return ignored
@@ -46,10 +46,10 @@ Index: Python-3.11.12/Lib/test/support/__init__.py
+fails_with_expat_2_6_0 = (unittest.expectedFailure
+ if is_expat_2_6_0
+ else lambda test: test)
-Index: Python-3.11.12/Lib/test/test_minidom.py
+Index: Python-3.11.14/Lib/test/test_minidom.py
===================================================================
---- Python-3.11.12.orig/Lib/test/test_minidom.py 2025-04-11 10:52:21.907086938 +0200
-+++ Python-3.11.12/Lib/test/test_minidom.py 2025-04-11 10:52:44.802522893 +0200
+--- Python-3.11.14.orig/Lib/test/test_minidom.py 2025-11-15 19:14:53.915952608 +0100
++++ Python-3.11.14/Lib/test/test_minidom.py 2025-11-15 19:15:12.859877278 +0100
@@ -6,7 +6,6 @@
from test import support
import unittest
@@ -94,10 +94,10 @@ Index: Python-3.11.12/Lib/test/test_minidom.py
parseString('')
def testDocRemoveChild(self):
-Index: Python-3.11.12/Lib/test/test_pyexpat.py
+Index: Python-3.11.14/Lib/test/test_pyexpat.py
===================================================================
---- Python-3.11.12.orig/Lib/test/test_pyexpat.py 2025-04-11 10:52:22.076696906 +0200
-+++ Python-3.11.12/Lib/test/test_pyexpat.py 2025-04-11 10:52:44.803228085 +0200
+--- Python-3.11.14.orig/Lib/test/test_pyexpat.py 2025-11-15 19:14:53.915952608 +0100
++++ Python-3.11.14/Lib/test/test_pyexpat.py 2025-11-15 19:15:12.860334045 +0100
@@ -14,8 +14,7 @@
from xml.parsers import expat
from xml.parsers.expat import errors
@@ -108,7 +108,7 @@ Index: Python-3.11.12/Lib/test/test_pyexpat.py
class SetAttributeTest(unittest.TestCase):
def setUp(self):
-@@ -770,9 +769,8 @@
+@@ -806,9 +805,8 @@
self.assertIs(parser.GetReparseDeferralEnabled(), enabled)
def test_reparse_deferral_enabled(self):
@@ -120,7 +120,7 @@ Index: Python-3.11.12/Lib/test/test_pyexpat.py
started = []
-@@ -801,9 +799,9 @@
+@@ -837,9 +835,9 @@
parser = expat.ParserCreate()
parser.StartElementHandler = start_element
@@ -132,10 +132,10 @@ Index: Python-3.11.12/Lib/test/test_pyexpat.py
for chunk in (b''):
parser.Parse(chunk, False)
-Index: Python-3.11.12/Lib/test/test_sax.py
+Index: Python-3.11.14/Lib/test/test_sax.py
===================================================================
---- Python-3.11.12.orig/Lib/test/test_sax.py 2025-04-11 10:52:22.111440337 +0200
-+++ Python-3.11.12/Lib/test/test_sax.py 2025-04-11 10:52:44.803567098 +0200
+--- Python-3.11.14.orig/Lib/test/test_sax.py 2025-11-15 19:14:53.915952608 +0100
++++ Python-3.11.14/Lib/test/test_sax.py 2025-11-15 19:15:12.860746114 +0100
@@ -19,13 +19,11 @@
from io import BytesIO, StringIO
import codecs
@@ -187,10 +187,10 @@ Index: Python-3.11.12/Lib/test/test_sax.py
self.assertFalse(parser._parser.GetReparseDeferralEnabled())
-Index: Python-3.11.12/Lib/test/test_xml_etree.py
+Index: Python-3.11.14/Lib/test/test_xml_etree.py
===================================================================
---- Python-3.11.12.orig/Lib/test/test_xml_etree.py 2025-04-11 10:52:22.425637912 +0200
-+++ Python-3.11.12/Lib/test/test_xml_etree.py 2025-04-11 10:52:44.804234785 +0200
+--- Python-3.11.14.orig/Lib/test/test_xml_etree.py 2025-11-15 19:14:53.915952608 +0100
++++ Python-3.11.14/Lib/test/test_xml_etree.py 2025-11-15 19:15:12.861491049 +0100
@@ -13,7 +13,6 @@
import operator
import os
diff --git a/CVE-2023-52425-remove-reparse_deferral-tests.patch b/CVE-2023-52425-remove-reparse_deferral-tests.patch
index 939fb2b..119328a 100644
--- a/CVE-2023-52425-remove-reparse_deferral-tests.patch
+++ b/CVE-2023-52425-remove-reparse_deferral-tests.patch
@@ -4,9 +4,11 @@
Lib/test/test_xml_etree.py | 2 ++
3 files changed, 6 insertions(+)
---- a/Lib/test/test_pyexpat.py
-+++ b/Lib/test/test_pyexpat.py
-@@ -768,6 +768,7 @@ class ReparseDeferralTest(unittest.TestC
+Index: Python-3.11.14/Lib/test/test_pyexpat.py
+===================================================================
+--- Python-3.11.14.orig/Lib/test/test_pyexpat.py 2025-11-15 19:15:12.860334045 +0100
++++ Python-3.11.14/Lib/test/test_pyexpat.py 2025-11-15 19:15:15.541090355 +0100
+@@ -804,6 +804,7 @@
parser.SetReparseDeferralEnabled(True)
self.assertIs(parser.GetReparseDeferralEnabled(), enabled)
@@ -14,7 +16,7 @@
def test_reparse_deferral_enabled(self):
if not is_expat_2_6_0:
self.skipTest("Linked libexpat doesn't support reparse deferral")
-@@ -791,6 +792,7 @@ class ReparseDeferralTest(unittest.TestC
+@@ -827,6 +828,7 @@
self.assertEqual(started, ['doc'])
@@ -22,9 +24,11 @@
def test_reparse_deferral_disabled(self):
started = []
---- a/Lib/test/test_sax.py
-+++ b/Lib/test/test_sax.py
-@@ -1213,6 +1213,7 @@ class ExpatReaderTest(XmlTestBase):
+Index: Python-3.11.14/Lib/test/test_sax.py
+===================================================================
+--- Python-3.11.14.orig/Lib/test/test_sax.py 2025-11-15 19:15:12.860746114 +0100
++++ Python-3.11.14/Lib/test/test_sax.py 2025-11-15 19:15:15.541608234 +0100
+@@ -1213,6 +1213,7 @@
self.assertEqual(result.getvalue(), start + b"text")
@@ -32,7 +36,7 @@
def test_flush_reparse_deferral_enabled(self):
if not is_expat_2_6_0:
self.skipTest("Linked libexpat doesn't support reparse deferral")
-@@ -1238,6 +1239,7 @@ class ExpatReaderTest(XmlTestBase):
+@@ -1238,6 +1239,7 @@
self.assertEqual(result.getvalue(), start + b"")
@@ -40,9 +44,11 @@
def test_flush_reparse_deferral_disabled(self):
if not is_expat_2_6_0:
self.skipTest("Linked libexpat doesn't support reparse deferral")
---- a/Lib/test/test_xml_etree.py
-+++ b/Lib/test/test_xml_etree.py
-@@ -1620,6 +1620,7 @@ class XMLPullParserTest(unittest.TestCas
+Index: Python-3.11.14/Lib/test/test_xml_etree.py
+===================================================================
+--- Python-3.11.14.orig/Lib/test/test_xml_etree.py 2025-11-15 19:15:12.861491049 +0100
++++ Python-3.11.14/Lib/test/test_xml_etree.py 2025-11-15 19:15:15.542327817 +0100
+@@ -1620,6 +1620,7 @@
with self.assertRaises(ValueError):
ET.XMLPullParser(events=('start', 'end', 'bogus'))
@@ -50,7 +56,7 @@
def test_flush_reparse_deferral_enabled(self):
parser = ET.XMLPullParser(events=('start', 'end'))
-@@ -1641,6 +1642,7 @@ class XMLPullParserTest(unittest.TestCas
+@@ -1641,6 +1642,7 @@
self.assert_event_tags(parser, [('end', 'doc')])
diff --git a/CVE-2025-6069-quad-complex-HTMLParser.patch b/CVE-2025-6069-quad-complex-HTMLParser.patch
deleted file mode 100644
index 46b59b1..0000000
--- a/CVE-2025-6069-quad-complex-HTMLParser.patch
+++ /dev/null
@@ -1,190 +0,0 @@
-From 9043edabc7e2f0dd655146e0a4571e2a0b2906af Mon Sep 17 00:00:00 2001
-From: Serhiy Storchaka
-Date: Fri, 13 Jun 2025 19:57:48 +0300
-Subject: [PATCH] gh-135462: Fix quadratic complexity in processing special
- input in HTMLParser (GH-135464)
-
-End-of-file errors are now handled according to the HTML5 specs --
-comments and declarations are automatically closed, tags are ignored.
-(cherry picked from commit 6eb6c5dbfb528bd07d77b60fd71fd05d81d45c41)
-
-Co-authored-by: Serhiy Storchaka
----
- Lib/html/parser.py | 41 +++++---
- Lib/test/test_htmlparser.py | 51 +++++++---
- Misc/NEWS.d/next/Security/2025-06-13-15-55-22.gh-issue-135462.KBeJpc.rst | 4
- 3 files changed, 74 insertions(+), 22 deletions(-)
- create mode 100644 Misc/NEWS.d/next/Security/2025-06-13-15-55-22.gh-issue-135462.KBeJpc.rst
-
-Index: Python-3.11.13/Lib/html/parser.py
-===================================================================
---- Python-3.11.13.orig/Lib/html/parser.py 2025-07-02 18:12:07.084569398 +0200
-+++ Python-3.11.13/Lib/html/parser.py 2025-07-02 18:12:12.582519793 +0200
-@@ -25,6 +25,7 @@
- charref = re.compile('(?:[0-9]+|[xX][0-9a-fA-F]+)[^0-9a-fA-F]')
-
- starttagopen = re.compile('<[a-zA-Z]')
-+endtagopen = re.compile('[a-zA-Z]')
- piclose = re.compile('>')
- commentclose = re.compile(r'--\s*>')
- # Note:
-@@ -176,7 +177,7 @@
- k = self.parse_pi(i)
- elif startswith("', i + 1)
-- if k < 0:
-- k = rawdata.find('<', i + 1)
-- if k < 0:
-- k = i + 1
-+ if starttagopen.match(rawdata, i): # < + letter
-+ pass
-+ elif startswith("", i):
-+ if i + 2 == n:
-+ self.handle_data("")
-+ elif endtagopen.match(rawdata, i): # + letter
-+ pass
-+ else:
-+ # bogus comment
-+ self.handle_comment(rawdata[i+2:])
-+ elif startswith("
-
- idle3.desktop
+
+ org.python.IDLE3
+ idle3.desktop
+
IDLE3
- CC0
- Python-2.0
Python 3 Integrated Development and Learning Environment
+
IDLE is Python’s Integrated Development and Learning Environment.
- The GUI is uniform between Windows, Unix, and Mac OS X.
+ The GUI is uniform between Windows, Unix, and macOS.
IDLE provides an easy way to start writing, running, and debugging
Python code.
@@ -19,17 +19,33 @@
It provides:
- - a Python shell window (interactive interpreter) with colorizing of code input, output, and error messages,
- - a multi-window text editor with multiple undo, Python colorizing, smart indent, call tips, auto completion, and other features,
- - search within any window, replace within editor windows, and search through multiple files (grep),
- - a debugger with persistent breakpoints, stepping, and viewing of global and local namespaces.
+ - a Python shell window (interactive interpreter) with colorizing of code input, output, and error messages,
+ - a multi-window text editor with multiple undo, Python colorizing, smart indent, call tips, auto completion, and other features,
+ - search within any window, replace within editor windows, and search through multiple files (grep),
+ - a debugger with persistent breakpoints, stepping, and viewing of global and local namespaces.
+
+
+ Python Software Foundation
+
+
https://docs.python.org/3/library/idle.html
+
- http://in.waw.pl/~zbyszek/fedora/idle3-appdata/idle3-main-window.png
- http://in.waw.pl/~zbyszek/fedora/idle3-appdata/idle3-class-browser.png
- http://in.waw.pl/~zbyszek/fedora/idle3-appdata/idle3-code-viewer.png
+
+ https://in.waw.pl/~zbyszek/fedora/idle3-appdata/idle3-main-window.png
+
+
+ https://in.waw.pl/~zbyszek/fedora/idle3-appdata/idle3-class-browser.png
+
+
+ https://in.waw.pl/~zbyszek/fedora/idle3-appdata/idle3-code-viewer.png
+
+
+ Python-2.0
+ CC0-1.0
zbyszek@in.waw.pl
-
+
+
diff --git a/python311.changes b/python311.changes
index 363b55c..b6b9dd8 100644
--- a/python311.changes
+++ b/python311.changes
@@ -1,3 +1,96 @@
+-------------------------------------------------------------------
+Thu Nov 13 17:13:03 UTC 2025 - Matej Cepl
+
+- Add CVE-2025-6075-expandvars-perf-degrad.patch avoid simple
+ quadratic complexity vulnerabilities of os.path.expandvars()
+ (CVE-2025-6075, bsc#1252974).
+- Readjusted patches:
+ - CVE-2023-52425-libexpat-2.6.0-backport.patch
+ - CVE-2023-52425-remove-reparse_deferral-tests.patch
+ - fix_configure_rst.patch
+ - skip_if_buildbot-extend.patch
+
+-------------------------------------------------------------------
+Wed Oct 15 08:52:35 UTC 2025 - Daniel Garcia
+
+- Update to 3.11.14:
+ - Security
+ - gh-139700: Check consistency of the zip64 end of central
+ directory record. Support records with “zip64 extensible data”
+ if there are no bytes prepended to the ZIP file
+ (CVE-2025-8291, bsc#1251305).
+ - gh-139400: xml.parsers.expat: Make sure that parent Expat
+ parsers are only garbage-collected once they are no longer
+ referenced by subparsers created by
+ ExternalEntityParserCreate(). Patch by Sebastian Pipping.
+ - gh-135661: Fix parsing start and end tags in
+ html.parser.HTMLParser according to the HTML5 standard.
+ * Whitespaces no longer accepted between and the tag name. E.g.
+ script> does not end the script section.
+ * Vertical tabulation (\v) and non-ASCII whitespaces no longer
+ recognized as whitespaces. The only whitespaces are \t\n\r\f and
+ space.
+ * Null character (U+0000) no longer ends the tag name.
+ * Attributes and slashes after the tag name in end tags are now
+ ignored, instead of terminating after the first > in quoted
+ attribute value. E.g. "/>.
+ * Multiple slashes and whitespaces between the last attribute and
+ closing > are now ignored in both start and end tags. E.g. .
+ * Multiple = between attribute name and value are no longer
+ collapsed. E.g. produces attribute “foo” with value
+ “=bar”.
+ - gh-135661: Fix CDATA section parsing in html.parser.HTMLParser
+ according to the HTML5 standard: ] ]> and ]] > no longer end the
+ CDATA section. Add private method _set_support_cdata() which can
+ be used to specify how to parse <[CDATA[ — as a CDATA section in
+ foreign content (SVG or MathML) or as a bogus comment in the
+ HTML namespace.
+ - gh-102555: Fix comment parsing in html.parser.HTMLParser
+ according to the HTML5 standard. --!> now ends the comment. -- >
+ no longer ends the comment. Support abnormally ended empty
+ comments <--> and <--->.
+ - gh-135462: Fix quadratic complexity in processing specially
+ crafted input in html.parser.HTMLParser. End-of-file errors are
+ now handled according to the HTML5 specs – comments and
+ declarations are automatically closed, tags are ignored.
+ - gh-118350: Fix support of escapable raw text mode (elements
+ “textarea” and “title”) in html.parser.HTMLParser.
+ - gh-86155: html.parser.HTMLParser.close() no longer loses data
+ when the