forked from pool/python311
Compare commits
189 Commits
Author | SHA256 | Date | |
---|---|---|---|
6ec5a86d6c | |||
6077f92a3d | |||
0c195902dd | |||
e06b229157 | |||
1bf3058aba | |||
420a5bd2d2 | |||
4cd370afa9 | |||
3701c69ddb | |||
b51967df3e | |||
6b34ffaa68 | |||
28749a59dd | |||
ebd01e5a57 | |||
c1db13ef0f | |||
4e3f0dd903 | |||
69fa4c8b8f | |||
d5adcdb437 | |||
ee7afa01a6 | |||
323372859b | |||
d36495652f | |||
ea222077b1 | |||
42e3868a51 | |||
d91107c793 | |||
1dad22a352 | |||
42d2447d53 | |||
6bf579cdde | |||
93c48806cf | |||
78b43d2db4 | |||
6935cf305a | |||
af76ca1218 | |||
578ac9ee0d | |||
04b6209620 | |||
1bdf112298 | |||
0f5a6b091f | |||
3e044ac945 | |||
108a2a7e18 | |||
ddc3db9f5e | |||
a36cc2d393 | |||
2f4b16c511 | |||
9fa0280821 | |||
77563efde5 | |||
12e9f4c239 | |||
f5aae8a813 | |||
daf38491cb | |||
48c5537865 | |||
4a5e3afeb0 | |||
f67c1ef5a0 | |||
5823595707 | |||
94e7ee7c44 | |||
ecc51fd1a6 | |||
a2eeecf0ed | |||
b98a243190 | |||
4c1b2b97e5 | |||
d310e96459 | |||
19a07a5898 | |||
763dd72636 | |||
a00e4c0107 | |||
7a43c0a133 | |||
3fa86c4781 | |||
511b0d3f92 | |||
63b5b7e315 | |||
7124f7199f | |||
1170d3a502 | |||
b6c310cc5a | |||
2f6f68cb45 | |||
992cbf442e | |||
d00c2f8ffd | |||
77ce54fe8f | |||
e54275a76b | |||
37ecd27cc8 | |||
32bb272437 | |||
116be53bb3 | |||
fe7f29284c | |||
19bdd05c49 | |||
246a8799b3 | |||
eceb720075 | |||
b1a4352010 | |||
11b7cca704 | |||
cc88adec5d | |||
5070284313 | |||
6acd83df79 | |||
f2e8cdf7ce | |||
61edd8bfc6 | |||
2697832d56 | |||
d0d6107118 | |||
5c654e8335 | |||
27413421cf | |||
af31ac92dd | |||
b0bca7ad80 | |||
96b991b360 | |||
0d9b06c5c0 | |||
4fb12f44cc | |||
a7d54cb5c3 | |||
21e9e7f697 | |||
380c1fa01b | |||
c7d2aa9012 | |||
ebe00d33da | |||
5fae7e4a44 | |||
727f4c9b01 | |||
09c8853139 | |||
cb3301d2cc | |||
8bce36d459 | |||
a7b11641fe | |||
18a62cf507 | |||
dbc72d69e1 | |||
4b50a8332b | |||
558337c773 | |||
382f0f4b58 | |||
55316ef9e1 | |||
ecfb0312cf | |||
f665ac48fe | |||
6abedd0987 | |||
24fe7e4f9e | |||
eb7790f0a7 | |||
41e7e28995 | |||
de765fc92e | |||
55fcbed4eb | |||
ff02f0908c | |||
fdf11aefc4 | |||
f7f28c547b | |||
b8797f4452 | |||
5760576192 | |||
6bf0620e58 | |||
7a2425c221 | |||
c1b0d9c8f9 | |||
d34496b956 | |||
d8e5832ad8 | |||
39157872a5 | |||
7cfc036a7d | |||
f503a46aa9 | |||
e71e638e14 | |||
ea266df005 | |||
a48f5d0f80 | |||
b323e62899 | |||
21d42b692c | |||
ccbbaff24e | |||
8fcb1e736e | |||
77f87ebc37 | |||
9f02c1193d | |||
1b24baf605 | |||
9eb1b9b809 | |||
339c66ef3e | |||
c9f46254f9 | |||
1c719478cb | |||
34212ca5cf | |||
0a8a28caaa | |||
dd8a3056e1 | |||
d7b979c1e0 | |||
d185756768 | |||
b37cda8bf5 | |||
a044f5c557 | |||
6c436c7abc | |||
95751a5895 | |||
03d1be1616 | |||
c6df50684c | |||
ba06f07184 | |||
5b218ea9e3 | |||
403af99cf1 | |||
6f939f9b60 | |||
d8ac67fc2d | |||
d52b13e86c | |||
d9d021447f | |||
fcee49126a | |||
3931fb9f09 | |||
93d3c08eeb | |||
7c5df48558 | |||
a867744a23 | |||
cdbc2f881d | |||
ebc3127ec8 | |||
3978a4fb6f | |||
817af8a82b | |||
6af5b9f2b3 | |||
ec126cfe78 | |||
b3dd13aabb | |||
f224cc3c2d | |||
f037c0629d | |||
eff536f20e | |||
9c0a8f3c4c | |||
bf95b5f221 | |||
6534561f49 | |||
634ab7609b | |||
ae07cf4ccf | |||
2b3a992a89 | |||
42e2453f80 | |||
1c968d4121 | |||
5e1455c810 | |||
887681833e | |||
4cbd00e948 | |||
62ccbe2ed8 | |||
4861b77003 |
@@ -6,9 +6,11 @@
|
|||||||
Lib/test/test_xml_etree.py | 12 ------------
|
Lib/test/test_xml_etree.py | 12 ------------
|
||||||
5 files changed, 37 insertions(+), 44 deletions(-)
|
5 files changed, 37 insertions(+), 44 deletions(-)
|
||||||
|
|
||||||
--- a/Lib/test/support/__init__.py
|
Index: Python-3.11.12/Lib/test/support/__init__.py
|
||||||
+++ b/Lib/test/support/__init__.py
|
===================================================================
|
||||||
@@ -8,6 +8,7 @@ import dataclasses
|
--- 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
|
||||||
|
@@ -8,6 +8,7 @@
|
||||||
import functools
|
import functools
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
@@ -16,7 +18,7 @@
|
|||||||
import stat
|
import stat
|
||||||
import sys
|
import sys
|
||||||
import sysconfig
|
import sysconfig
|
||||||
@@ -56,7 +57,7 @@ __all__ = [
|
@@ -56,7 +57,7 @@
|
||||||
"run_with_tz", "PGO", "missing_compiler_executable",
|
"run_with_tz", "PGO", "missing_compiler_executable",
|
||||||
"ALWAYS_EQ", "NEVER_EQ", "LARGEST", "SMALLEST",
|
"ALWAYS_EQ", "NEVER_EQ", "LARGEST", "SMALLEST",
|
||||||
"LOOPBACK_TIMEOUT", "INTERNET_TIMEOUT", "SHORT_TIMEOUT", "LONG_TIMEOUT",
|
"LOOPBACK_TIMEOUT", "INTERNET_TIMEOUT", "SHORT_TIMEOUT", "LONG_TIMEOUT",
|
||||||
@@ -25,7 +27,7 @@
|
|||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
@@ -2240,6 +2241,17 @@ def copy_python_src_ignore(path, names):
|
@@ -2244,6 +2245,17 @@
|
||||||
}
|
}
|
||||||
return ignored
|
return ignored
|
||||||
|
|
||||||
@@ -44,9 +46,11 @@
|
|||||||
+fails_with_expat_2_6_0 = (unittest.expectedFailure
|
+fails_with_expat_2_6_0 = (unittest.expectedFailure
|
||||||
+ if is_expat_2_6_0
|
+ if is_expat_2_6_0
|
||||||
+ else lambda test: test)
|
+ else lambda test: test)
|
||||||
--- a/Lib/test/test_minidom.py
|
Index: Python-3.11.12/Lib/test/test_minidom.py
|
||||||
+++ b/Lib/test/test_minidom.py
|
===================================================================
|
||||||
@@ -6,7 +6,6 @@ import io
|
--- 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
|
||||||
|
@@ -6,7 +6,6 @@
|
||||||
from test import support
|
from test import support
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
@@ -54,7 +58,7 @@
|
|||||||
import xml.dom.minidom
|
import xml.dom.minidom
|
||||||
|
|
||||||
from xml.dom.minidom import parse, Attr, Node, Document, parseString
|
from xml.dom.minidom import parse, Attr, Node, Document, parseString
|
||||||
@@ -1163,13 +1162,11 @@ class MinidomTest(unittest.TestCase):
|
@@ -1163,13 +1162,11 @@
|
||||||
|
|
||||||
# Verify that character decoding errors raise exceptions instead
|
# Verify that character decoding errors raise exceptions instead
|
||||||
# of crashing
|
# of crashing
|
||||||
@@ -73,7 +77,7 @@
|
|||||||
b'<fran\xe7ais>Comment \xe7a va ? Tr\xe8s bien ?</fran\xe7ais>')
|
b'<fran\xe7ais>Comment \xe7a va ? Tr\xe8s bien ?</fran\xe7ais>')
|
||||||
|
|
||||||
doc.unlink()
|
doc.unlink()
|
||||||
@@ -1631,12 +1628,10 @@ class MinidomTest(unittest.TestCase):
|
@@ -1631,12 +1628,10 @@
|
||||||
self.confirm(doc2.namespaceURI == xml.dom.EMPTY_NAMESPACE)
|
self.confirm(doc2.namespaceURI == xml.dom.EMPTY_NAMESPACE)
|
||||||
|
|
||||||
def testExceptionOnSpacesInXMLNSValue(self):
|
def testExceptionOnSpacesInXMLNSValue(self):
|
||||||
@@ -90,9 +94,11 @@
|
|||||||
parseString('<element xmlns:abc="http:abc.com/de f g/hi/j k"><abc:foo /></element>')
|
parseString('<element xmlns:abc="http:abc.com/de f g/hi/j k"><abc:foo /></element>')
|
||||||
|
|
||||||
def testDocRemoveChild(self):
|
def testDocRemoveChild(self):
|
||||||
--- a/Lib/test/test_pyexpat.py
|
Index: Python-3.11.12/Lib/test/test_pyexpat.py
|
||||||
+++ b/Lib/test/test_pyexpat.py
|
===================================================================
|
||||||
@@ -14,8 +14,7 @@ from test.support import os_helper
|
--- 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
|
||||||
|
@@ -14,8 +14,7 @@
|
||||||
from xml.parsers import expat
|
from xml.parsers import expat
|
||||||
from xml.parsers.expat import errors
|
from xml.parsers.expat import errors
|
||||||
|
|
||||||
@@ -102,7 +108,7 @@
|
|||||||
|
|
||||||
class SetAttributeTest(unittest.TestCase):
|
class SetAttributeTest(unittest.TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
@@ -770,9 +769,8 @@ class ReparseDeferralTest(unittest.TestC
|
@@ -770,9 +769,8 @@
|
||||||
self.assertIs(parser.GetReparseDeferralEnabled(), enabled)
|
self.assertIs(parser.GetReparseDeferralEnabled(), enabled)
|
||||||
|
|
||||||
def test_reparse_deferral_enabled(self):
|
def test_reparse_deferral_enabled(self):
|
||||||
@@ -114,7 +120,7 @@
|
|||||||
|
|
||||||
started = []
|
started = []
|
||||||
|
|
||||||
@@ -801,9 +799,9 @@ class ReparseDeferralTest(unittest.TestC
|
@@ -801,9 +799,9 @@
|
||||||
|
|
||||||
parser = expat.ParserCreate()
|
parser = expat.ParserCreate()
|
||||||
parser.StartElementHandler = start_element
|
parser.StartElementHandler = start_element
|
||||||
@@ -126,9 +132,11 @@
|
|||||||
|
|
||||||
for chunk in (b'<doc', b'/>'):
|
for chunk in (b'<doc', b'/>'):
|
||||||
parser.Parse(chunk, False)
|
parser.Parse(chunk, False)
|
||||||
--- a/Lib/test/test_sax.py
|
Index: Python-3.11.12/Lib/test/test_sax.py
|
||||||
+++ b/Lib/test/test_sax.py
|
===================================================================
|
||||||
@@ -19,13 +19,11 @@ from xml.sax.xmlreader import InputSourc
|
--- 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
|
||||||
|
@@ -19,13 +19,11 @@
|
||||||
from io import BytesIO, StringIO
|
from io import BytesIO, StringIO
|
||||||
import codecs
|
import codecs
|
||||||
import os.path
|
import os.path
|
||||||
@@ -143,7 +151,7 @@
|
|||||||
from test.support.os_helper import FakePath, TESTFN
|
from test.support.os_helper import FakePath, TESTFN
|
||||||
|
|
||||||
|
|
||||||
@@ -1215,10 +1213,10 @@ class ExpatReaderTest(XmlTestBase):
|
@@ -1215,10 +1213,10 @@
|
||||||
|
|
||||||
self.assertEqual(result.getvalue(), start + b"<doc>text</doc>")
|
self.assertEqual(result.getvalue(), start + b"<doc>text</doc>")
|
||||||
|
|
||||||
@@ -157,7 +165,7 @@
|
|||||||
result = BytesIO()
|
result = BytesIO()
|
||||||
xmlgen = XMLGenerator(result)
|
xmlgen = XMLGenerator(result)
|
||||||
parser = create_parser()
|
parser = create_parser()
|
||||||
@@ -1241,6 +1239,9 @@ class ExpatReaderTest(XmlTestBase):
|
@@ -1241,6 +1239,9 @@
|
||||||
self.assertEqual(result.getvalue(), start + b"<doc></doc>")
|
self.assertEqual(result.getvalue(), start + b"<doc></doc>")
|
||||||
|
|
||||||
def test_flush_reparse_deferral_disabled(self):
|
def test_flush_reparse_deferral_disabled(self):
|
||||||
@@ -167,7 +175,7 @@
|
|||||||
result = BytesIO()
|
result = BytesIO()
|
||||||
xmlgen = XMLGenerator(result)
|
xmlgen = XMLGenerator(result)
|
||||||
parser = create_parser()
|
parser = create_parser()
|
||||||
@@ -1249,9 +1250,8 @@ class ExpatReaderTest(XmlTestBase):
|
@@ -1249,9 +1250,8 @@
|
||||||
for chunk in ("<doc", ">"):
|
for chunk in ("<doc", ">"):
|
||||||
parser.feed(chunk)
|
parser.feed(chunk)
|
||||||
|
|
||||||
@@ -179,9 +187,11 @@
|
|||||||
|
|
||||||
self.assertFalse(parser._parser.GetReparseDeferralEnabled())
|
self.assertFalse(parser._parser.GetReparseDeferralEnabled())
|
||||||
|
|
||||||
--- a/Lib/test/test_xml_etree.py
|
Index: Python-3.11.12/Lib/test/test_xml_etree.py
|
||||||
+++ b/Lib/test/test_xml_etree.py
|
===================================================================
|
||||||
@@ -13,7 +13,6 @@ import itertools
|
--- 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
|
||||||
|
@@ -13,7 +13,6 @@
|
||||||
import operator
|
import operator
|
||||||
import os
|
import os
|
||||||
import pickle
|
import pickle
|
||||||
@@ -189,7 +199,7 @@
|
|||||||
import sys
|
import sys
|
||||||
import textwrap
|
import textwrap
|
||||||
import types
|
import types
|
||||||
@@ -1424,12 +1423,6 @@ class XMLPullParserTest(unittest.TestCas
|
@@ -1424,12 +1423,6 @@
|
||||||
self.assert_event_tags(parser, [('end', 'root')])
|
self.assert_event_tags(parser, [('end', 'root')])
|
||||||
self.assertIsNone(parser.close())
|
self.assertIsNone(parser.close())
|
||||||
|
|
||||||
@@ -202,7 +212,7 @@
|
|||||||
def test_simple_xml_chunk_22(self):
|
def test_simple_xml_chunk_22(self):
|
||||||
self.test_simple_xml(chunk_size=22)
|
self.test_simple_xml(chunk_size=22)
|
||||||
|
|
||||||
@@ -1627,9 +1620,6 @@ class XMLPullParserTest(unittest.TestCas
|
@@ -1627,9 +1620,6 @@
|
||||||
with self.assertRaises(ValueError):
|
with self.assertRaises(ValueError):
|
||||||
ET.XMLPullParser(events=('start', 'end', 'bogus'))
|
ET.XMLPullParser(events=('start', 'end', 'bogus'))
|
||||||
|
|
||||||
@@ -212,7 +222,7 @@
|
|||||||
def test_flush_reparse_deferral_enabled(self):
|
def test_flush_reparse_deferral_enabled(self):
|
||||||
parser = ET.XMLPullParser(events=('start', 'end'))
|
parser = ET.XMLPullParser(events=('start', 'end'))
|
||||||
|
|
||||||
@@ -1656,8 +1646,6 @@ class XMLPullParserTest(unittest.TestCas
|
@@ -1656,8 +1646,6 @@
|
||||||
|
|
||||||
for chunk in ("<doc", ">"):
|
for chunk in ("<doc", ">"):
|
||||||
parser.feed(chunk)
|
parser.feed(chunk)
|
||||||
|
190
CVE-2025-6069-quad-complex-HTMLParser.patch
Normal file
190
CVE-2025-6069-quad-complex-HTMLParser.patch
Normal file
@@ -0,0 +1,190 @@
|
|||||||
|
From 9043edabc7e2f0dd655146e0a4571e2a0b2906af Mon Sep 17 00:00:00 2001
|
||||||
|
From: Serhiy Storchaka <storchaka@gmail.com>
|
||||||
|
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 <storchaka@gmail.com>
|
||||||
|
---
|
||||||
|
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):
|
||||||
|
k = self.parse_html_declaration(i)
|
||||||
|
- elif (i + 1) < n:
|
||||||
|
+ elif (i + 1) < n or end:
|
||||||
|
self.handle_data("<")
|
||||||
|
k = i + 1
|
||||||
|
else:
|
||||||
|
@@ -184,17 +185,35 @@
|
||||||
|
if k < 0:
|
||||||
|
if not end:
|
||||||
|
break
|
||||||
|
- k = rawdata.find('>', 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("<!--", i):
|
||||||
|
+ j = n
|
||||||
|
+ for suffix in ("--!", "--", "-"):
|
||||||
|
+ if rawdata.endswith(suffix, i+4):
|
||||||
|
+ j -= len(suffix)
|
||||||
|
+ break
|
||||||
|
+ self.handle_comment(rawdata[i+4:j])
|
||||||
|
+ elif startswith("<![CDATA[", i):
|
||||||
|
+ self.unknown_decl(rawdata[i+3:])
|
||||||
|
+ elif rawdata[i:i+9].lower() == '<!doctype':
|
||||||
|
+ self.handle_decl(rawdata[i+2:])
|
||||||
|
+ elif startswith("<!", i):
|
||||||
|
+ # bogus comment
|
||||||
|
+ self.handle_comment(rawdata[i+2:])
|
||||||
|
+ elif startswith("<?", i):
|
||||||
|
+ self.handle_pi(rawdata[i+2:])
|
||||||
|
else:
|
||||||
|
- k += 1
|
||||||
|
- if self.convert_charrefs and not self.cdata_elem:
|
||||||
|
- self.handle_data(unescape(rawdata[i:k]))
|
||||||
|
- else:
|
||||||
|
- self.handle_data(rawdata[i:k])
|
||||||
|
+ raise AssertionError("we should not get here!")
|
||||||
|
+ k = n
|
||||||
|
i = self.updatepos(i, k)
|
||||||
|
elif startswith("&#", i):
|
||||||
|
match = charref.match(rawdata, i)
|
||||||
|
Index: Python-3.11.13/Lib/test/test_htmlparser.py
|
||||||
|
===================================================================
|
||||||
|
--- Python-3.11.13.orig/Lib/test/test_htmlparser.py 2025-07-02 18:12:08.523658593 +0200
|
||||||
|
+++ Python-3.11.13/Lib/test/test_htmlparser.py 2025-07-02 18:13:32.674943007 +0200
|
||||||
|
@@ -4,6 +4,8 @@
|
||||||
|
import pprint
|
||||||
|
import unittest
|
||||||
|
|
||||||
|
+from test import support
|
||||||
|
+
|
||||||
|
|
||||||
|
class EventCollector(html.parser.HTMLParser):
|
||||||
|
|
||||||
|
@@ -391,28 +393,34 @@
|
||||||
|
('data', '<'),
|
||||||
|
('starttag', 'bc<', [('a', None)]),
|
||||||
|
('endtag', 'html'),
|
||||||
|
- ('data', '\n<img src="URL>'),
|
||||||
|
- ('comment', '/img'),
|
||||||
|
- ('endtag', 'html<')])
|
||||||
|
+ ('data', '\n')])
|
||||||
|
|
||||||
|
def test_starttag_junk_chars(self):
|
||||||
|
+ self._run_check("<", [('data', '<')])
|
||||||
|
+ self._run_check("<>", [('data', '<>')])
|
||||||
|
+ self._run_check("< >", [('data', '< >')])
|
||||||
|
+ self._run_check("< ", [('data', '< ')])
|
||||||
|
self._run_check("</>", [])
|
||||||
|
+ self._run_check("<$>", [('data', '<$>')])
|
||||||
|
self._run_check("</$>", [('comment', '$')])
|
||||||
|
self._run_check("</", [('data', '</')])
|
||||||
|
- self._run_check("</a", [('data', '</a')])
|
||||||
|
+ self._run_check("</a", [])
|
||||||
|
+ self._run_check("</ a>", [('endtag', 'a')])
|
||||||
|
+ self._run_check("</ a", [('comment', ' a')])
|
||||||
|
self._run_check("<a<a>", [('starttag', 'a<a', [])])
|
||||||
|
self._run_check("</a<a>", [('endtag', 'a<a')])
|
||||||
|
- self._run_check("<!", [('data', '<!')])
|
||||||
|
- self._run_check("<a", [('data', '<a')])
|
||||||
|
- self._run_check("<a foo='bar'", [('data', "<a foo='bar'")])
|
||||||
|
- self._run_check("<a foo='bar", [('data', "<a foo='bar")])
|
||||||
|
- self._run_check("<a foo='>'", [('data', "<a foo='>'")])
|
||||||
|
- self._run_check("<a foo='>", [('data', "<a foo='>")])
|
||||||
|
+ self._run_check("<!", [('comment', '')])
|
||||||
|
+ self._run_check("<a", [])
|
||||||
|
+ self._run_check("<a foo='bar'", [])
|
||||||
|
+ self._run_check("<a foo='bar", [])
|
||||||
|
+ self._run_check("<a foo='>'", [])
|
||||||
|
+ self._run_check("<a foo='>", [])
|
||||||
|
self._run_check("<a$>", [('starttag', 'a$', [])])
|
||||||
|
self._run_check("<a$b>", [('starttag', 'a$b', [])])
|
||||||
|
self._run_check("<a$b/>", [('startendtag', 'a$b', [])])
|
||||||
|
self._run_check("<a$b >", [('starttag', 'a$b', [])])
|
||||||
|
self._run_check("<a$b />", [('startendtag', 'a$b', [])])
|
||||||
|
+ self._run_check("</a$b>", [('endtag', 'a$b')])
|
||||||
|
|
||||||
|
def test_slashes_in_starttag(self):
|
||||||
|
self._run_check('<a foo="var"/>', [('startendtag', 'a', [('foo', 'var')])])
|
||||||
|
@@ -549,8 +557,9 @@
|
||||||
|
('comment', ' -- close enough --'),
|
||||||
|
('comment', ''),
|
||||||
|
('comment', '<-- this was an empty comment'),
|
||||||
|
- ('comment', '!! another bogus comment !!!'),
|
||||||
|
+ ('comment', '!! another bogus comment !!!')
|
||||||
|
]
|
||||||
|
+
|
||||||
|
self._run_check(html, expected)
|
||||||
|
|
||||||
|
def test_broken_condcoms(self):
|
||||||
|
@@ -598,6 +607,26 @@
|
||||||
|
('endtag', 'a'), ('data', ' bar & baz')]
|
||||||
|
)
|
||||||
|
|
||||||
|
+ @support.requires_resource('cpu')
|
||||||
|
+ def test_eof_no_quadratic_complexity(self):
|
||||||
|
+ # Each of these examples used to take about an hour.
|
||||||
|
+ # Now they take a fraction of a second.
|
||||||
|
+ def check(source):
|
||||||
|
+ parser = html.parser.HTMLParser()
|
||||||
|
+ parser.feed(source)
|
||||||
|
+ parser.close()
|
||||||
|
+ n = 120_000
|
||||||
|
+ check("<a " * n)
|
||||||
|
+ check("<a a=" * n)
|
||||||
|
+ check("</a " * 14 * n)
|
||||||
|
+ check("</a a=" * 11 * n)
|
||||||
|
+ check("<!--" * 4 * n)
|
||||||
|
+ check("<!" * 60 * n)
|
||||||
|
+ check("<?" * 19 * n)
|
||||||
|
+ check("</$" * 15 * n)
|
||||||
|
+ check("<![CDATA[" * 9 * n)
|
||||||
|
+ check("<!doctype" * 35 * n)
|
||||||
|
+
|
||||||
|
|
||||||
|
class AttributesTestCase(TestCaseBase):
|
||||||
|
|
||||||
|
Index: Python-3.11.13/Misc/NEWS.d/next/Security/2025-06-13-15-55-22.gh-issue-135462.KBeJpc.rst
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
|
+++ Python-3.11.13/Misc/NEWS.d/next/Security/2025-06-13-15-55-22.gh-issue-135462.KBeJpc.rst 2025-07-02 18:12:12.583386736 +0200
|
||||||
|
@@ -0,0 +1,4 @@
|
||||||
|
+Fix quadratic complexity in processing specially crafted input in
|
||||||
|
+:class:`html.parser.HTMLParser`. End-of-file errors are now handled according
|
||||||
|
+to the HTML5 specs -- comments and declarations are automatically closed,
|
||||||
|
+tags are ignored.
|
212
CVE-2025-8194-tarfile-no-neg-offsets.patch
Normal file
212
CVE-2025-8194-tarfile-no-neg-offsets.patch
Normal file
@@ -0,0 +1,212 @@
|
|||||||
|
From cb3519590c62f9b1abf7f31b92ec37d4b725ce15 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Alexander Urieles <aeurielesn@users.noreply.github.com>
|
||||||
|
Date: Mon, 28 Jul 2025 17:37:26 +0200
|
||||||
|
Subject: [PATCH] gh-130577: tarfile now validates archives to ensure member
|
||||||
|
offsets are non-negative (GH-137027) (cherry picked from commit
|
||||||
|
7040aa54f14676938970e10c5f74ea93cd56aa38)
|
||||||
|
|
||||||
|
Co-authored-by: Alexander Urieles <aeurielesn@users.noreply.github.com>
|
||||||
|
Co-authored-by: Gregory P. Smith <greg@krypto.org>
|
||||||
|
---
|
||||||
|
Lib/tarfile.py | 3
|
||||||
|
Lib/test/test_tarfile.py | 156 ++++++++++
|
||||||
|
Misc/NEWS.d/next/Library/2025-07-23-00-35-29.gh-issue-130577.c7EITy.rst | 3
|
||||||
|
3 files changed, 162 insertions(+)
|
||||||
|
create mode 100644 Misc/NEWS.d/next/Library/2025-07-23-00-35-29.gh-issue-130577.c7EITy.rst
|
||||||
|
|
||||||
|
Index: Python-3.11.13/Lib/tarfile.py
|
||||||
|
===================================================================
|
||||||
|
--- Python-3.11.13.orig/Lib/tarfile.py 2025-08-01 22:21:29.158050900 +0200
|
||||||
|
+++ Python-3.11.13/Lib/tarfile.py 2025-08-01 22:21:33.121079687 +0200
|
||||||
|
@@ -1613,6 +1613,9 @@
|
||||||
|
"""Round up a byte count by BLOCKSIZE and return it,
|
||||||
|
e.g. _block(834) => 1024.
|
||||||
|
"""
|
||||||
|
+ # Only non-negative offsets are allowed
|
||||||
|
+ if count < 0:
|
||||||
|
+ raise InvalidHeaderError("invalid offset")
|
||||||
|
blocks, remainder = divmod(count, BLOCKSIZE)
|
||||||
|
if remainder:
|
||||||
|
blocks += 1
|
||||||
|
Index: Python-3.11.13/Lib/test/test_tarfile.py
|
||||||
|
===================================================================
|
||||||
|
--- Python-3.11.13.orig/Lib/test/test_tarfile.py 2025-08-01 22:21:30.644301786 +0200
|
||||||
|
+++ Python-3.11.13/Lib/test/test_tarfile.py 2025-08-01 22:21:33.121718600 +0200
|
||||||
|
@@ -50,6 +50,7 @@
|
||||||
|
xzname = os.path.join(TEMPDIR, "testtar.tar.xz")
|
||||||
|
tmpname = os.path.join(TEMPDIR, "tmp.tar")
|
||||||
|
dotlessname = os.path.join(TEMPDIR, "testtar")
|
||||||
|
+SPACE = b" "
|
||||||
|
|
||||||
|
sha256_regtype = (
|
||||||
|
"e09e4bc8b3c9d9177e77256353b36c159f5f040531bbd4b024a8f9b9196c71ce"
|
||||||
|
@@ -4386,6 +4387,161 @@
|
||||||
|
ar.extractall(self.testdir, filter='fully_trusted')
|
||||||
|
|
||||||
|
|
||||||
|
+class OffsetValidationTests(unittest.TestCase):
|
||||||
|
+ tarname = tmpname
|
||||||
|
+ invalid_posix_header = (
|
||||||
|
+ # name: 100 bytes
|
||||||
|
+ tarfile.NUL * tarfile.LENGTH_NAME
|
||||||
|
+ # mode, space, null terminator: 8 bytes
|
||||||
|
+ + b"000755" + SPACE + tarfile.NUL
|
||||||
|
+ # uid, space, null terminator: 8 bytes
|
||||||
|
+ + b"000001" + SPACE + tarfile.NUL
|
||||||
|
+ # gid, space, null terminator: 8 bytes
|
||||||
|
+ + b"000001" + SPACE + tarfile.NUL
|
||||||
|
+ # size, space: 12 bytes
|
||||||
|
+ + b"\xff" * 11 + SPACE
|
||||||
|
+ # mtime, space: 12 bytes
|
||||||
|
+ + tarfile.NUL * 11 + SPACE
|
||||||
|
+ # chksum: 8 bytes
|
||||||
|
+ + b"0011407" + tarfile.NUL
|
||||||
|
+ # type: 1 byte
|
||||||
|
+ + tarfile.REGTYPE
|
||||||
|
+ # linkname: 100 bytes
|
||||||
|
+ + tarfile.NUL * tarfile.LENGTH_LINK
|
||||||
|
+ # magic: 6 bytes, version: 2 bytes
|
||||||
|
+ + tarfile.POSIX_MAGIC
|
||||||
|
+ # uname: 32 bytes
|
||||||
|
+ + tarfile.NUL * 32
|
||||||
|
+ # gname: 32 bytes
|
||||||
|
+ + tarfile.NUL * 32
|
||||||
|
+ # devmajor, space, null terminator: 8 bytes
|
||||||
|
+ + tarfile.NUL * 6 + SPACE + tarfile.NUL
|
||||||
|
+ # devminor, space, null terminator: 8 bytes
|
||||||
|
+ + tarfile.NUL * 6 + SPACE + tarfile.NUL
|
||||||
|
+ # prefix: 155 bytes
|
||||||
|
+ + tarfile.NUL * tarfile.LENGTH_PREFIX
|
||||||
|
+ # padding: 12 bytes
|
||||||
|
+ + tarfile.NUL * 12
|
||||||
|
+ )
|
||||||
|
+ invalid_gnu_header = (
|
||||||
|
+ # name: 100 bytes
|
||||||
|
+ tarfile.NUL * tarfile.LENGTH_NAME
|
||||||
|
+ # mode, null terminator: 8 bytes
|
||||||
|
+ + b"0000755" + tarfile.NUL
|
||||||
|
+ # uid, null terminator: 8 bytes
|
||||||
|
+ + b"0000001" + tarfile.NUL
|
||||||
|
+ # gid, space, null terminator: 8 bytes
|
||||||
|
+ + b"0000001" + tarfile.NUL
|
||||||
|
+ # size, space: 12 bytes
|
||||||
|
+ + b"\xff" * 11 + SPACE
|
||||||
|
+ # mtime, space: 12 bytes
|
||||||
|
+ + tarfile.NUL * 11 + SPACE
|
||||||
|
+ # chksum: 8 bytes
|
||||||
|
+ + b"0011327" + tarfile.NUL
|
||||||
|
+ # type: 1 byte
|
||||||
|
+ + tarfile.REGTYPE
|
||||||
|
+ # linkname: 100 bytes
|
||||||
|
+ + tarfile.NUL * tarfile.LENGTH_LINK
|
||||||
|
+ # magic: 8 bytes
|
||||||
|
+ + tarfile.GNU_MAGIC
|
||||||
|
+ # uname: 32 bytes
|
||||||
|
+ + tarfile.NUL * 32
|
||||||
|
+ # gname: 32 bytes
|
||||||
|
+ + tarfile.NUL * 32
|
||||||
|
+ # devmajor, null terminator: 8 bytes
|
||||||
|
+ + tarfile.NUL * 8
|
||||||
|
+ # devminor, null terminator: 8 bytes
|
||||||
|
+ + tarfile.NUL * 8
|
||||||
|
+ # padding: 167 bytes
|
||||||
|
+ + tarfile.NUL * 167
|
||||||
|
+ )
|
||||||
|
+ invalid_v7_header = (
|
||||||
|
+ # name: 100 bytes
|
||||||
|
+ tarfile.NUL * tarfile.LENGTH_NAME
|
||||||
|
+ # mode, space, null terminator: 8 bytes
|
||||||
|
+ + b"000755" + SPACE + tarfile.NUL
|
||||||
|
+ # uid, space, null terminator: 8 bytes
|
||||||
|
+ + b"000001" + SPACE + tarfile.NUL
|
||||||
|
+ # gid, space, null terminator: 8 bytes
|
||||||
|
+ + b"000001" + SPACE + tarfile.NUL
|
||||||
|
+ # size, space: 12 bytes
|
||||||
|
+ + b"\xff" * 11 + SPACE
|
||||||
|
+ # mtime, space: 12 bytes
|
||||||
|
+ + tarfile.NUL * 11 + SPACE
|
||||||
|
+ # chksum: 8 bytes
|
||||||
|
+ + b"0010070" + tarfile.NUL
|
||||||
|
+ # type: 1 byte
|
||||||
|
+ + tarfile.REGTYPE
|
||||||
|
+ # linkname: 100 bytes
|
||||||
|
+ + tarfile.NUL * tarfile.LENGTH_LINK
|
||||||
|
+ # padding: 255 bytes
|
||||||
|
+ + tarfile.NUL * 255
|
||||||
|
+ )
|
||||||
|
+ valid_gnu_header = tarfile.TarInfo("filename").tobuf(tarfile.GNU_FORMAT)
|
||||||
|
+ data_block = b"\xff" * tarfile.BLOCKSIZE
|
||||||
|
+
|
||||||
|
+ def _write_buffer(self, buffer):
|
||||||
|
+ with open(self.tarname, "wb") as f:
|
||||||
|
+ f.write(buffer)
|
||||||
|
+
|
||||||
|
+ def _get_members(self, ignore_zeros=None):
|
||||||
|
+ with open(self.tarname, "rb") as f:
|
||||||
|
+ with tarfile.open(
|
||||||
|
+ mode="r", fileobj=f, ignore_zeros=ignore_zeros
|
||||||
|
+ ) as tar:
|
||||||
|
+ return tar.getmembers()
|
||||||
|
+
|
||||||
|
+ def _assert_raises_read_error_exception(self):
|
||||||
|
+ with self.assertRaisesRegex(
|
||||||
|
+ tarfile.ReadError, "file could not be opened successfully"
|
||||||
|
+ ):
|
||||||
|
+ self._get_members()
|
||||||
|
+
|
||||||
|
+ def test_invalid_offset_header_validations(self):
|
||||||
|
+ for tar_format, invalid_header in (
|
||||||
|
+ ("posix", self.invalid_posix_header),
|
||||||
|
+ ("gnu", self.invalid_gnu_header),
|
||||||
|
+ ("v7", self.invalid_v7_header),
|
||||||
|
+ ):
|
||||||
|
+ with self.subTest(format=tar_format):
|
||||||
|
+ self._write_buffer(invalid_header)
|
||||||
|
+ self._assert_raises_read_error_exception()
|
||||||
|
+
|
||||||
|
+ def test_early_stop_at_invalid_offset_header(self):
|
||||||
|
+ buffer = self.valid_gnu_header + self.invalid_gnu_header + self.valid_gnu_header
|
||||||
|
+ self._write_buffer(buffer)
|
||||||
|
+ members = self._get_members()
|
||||||
|
+ self.assertEqual(len(members), 1)
|
||||||
|
+ self.assertEqual(members[0].name, "filename")
|
||||||
|
+ self.assertEqual(members[0].offset, 0)
|
||||||
|
+
|
||||||
|
+ def test_ignore_invalid_archive(self):
|
||||||
|
+ # 3 invalid headers with their respective data
|
||||||
|
+ buffer = (self.invalid_gnu_header + self.data_block) * 3
|
||||||
|
+ self._write_buffer(buffer)
|
||||||
|
+ members = self._get_members(ignore_zeros=True)
|
||||||
|
+ self.assertEqual(len(members), 0)
|
||||||
|
+
|
||||||
|
+ def test_ignore_invalid_offset_headers(self):
|
||||||
|
+ for first_block, second_block, expected_offset in (
|
||||||
|
+ (
|
||||||
|
+ (self.valid_gnu_header),
|
||||||
|
+ (self.invalid_gnu_header + self.data_block),
|
||||||
|
+ 0,
|
||||||
|
+ ),
|
||||||
|
+ (
|
||||||
|
+ (self.invalid_gnu_header + self.data_block),
|
||||||
|
+ (self.valid_gnu_header),
|
||||||
|
+ 1024,
|
||||||
|
+ ),
|
||||||
|
+ ):
|
||||||
|
+ self._write_buffer(first_block + second_block)
|
||||||
|
+ members = self._get_members(ignore_zeros=True)
|
||||||
|
+ self.assertEqual(len(members), 1)
|
||||||
|
+ self.assertEqual(members[0].name, "filename")
|
||||||
|
+ self.assertEqual(members[0].offset, expected_offset)
|
||||||
|
+
|
||||||
|
+
|
||||||
|
def setUpModule():
|
||||||
|
os_helper.unlink(TEMPDIR)
|
||||||
|
os.makedirs(TEMPDIR)
|
||||||
|
Index: Python-3.11.13/Misc/NEWS.d/next/Library/2025-07-23-00-35-29.gh-issue-130577.c7EITy.rst
|
||||||
|
===================================================================
|
||||||
|
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
|
||||||
|
+++ Python-3.11.13/Misc/NEWS.d/next/Library/2025-07-23-00-35-29.gh-issue-130577.c7EITy.rst 2025-08-01 22:21:33.122108946 +0200
|
||||||
|
@@ -0,0 +1,3 @@
|
||||||
|
+:mod:`tarfile` now validates archives to ensure member offsets are
|
||||||
|
+non-negative. (Contributed by Alexander Enrique Urieles Nieto in
|
||||||
|
+:gh:`130577`.)
|
@@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:07a4356e912900e61a15cb0949a06c4a05012e213ecd6b4e84d0f67aabbee372
|
|
||||||
size 20067656
|
|
@@ -1,16 +0,0 @@
|
|||||||
-----BEGIN PGP SIGNATURE-----
|
|
||||||
|
|
||||||
iQIzBAABCAAdFiEEz9yiRbEEPPKl+Xhl/+h0BBaL2EcFAmbbrO0ACgkQ/+h0BBaL
|
|
||||||
2Ec+YBAAnQJLKYPjj7Yr7xkFU655Sv86JxeRAdWjnIapbiIuWg3Up8Pd8FTRgHGf
|
|
||||||
3XdTHw7b03lSjtzJwavzdnDklqAlBIGn9dVieljUIN7NYyNxoYOr/AiatimgSwv7
|
|
||||||
dI5mfun5fLKV6ZcdNdQN5PJ3RZtF3I7VfkN2mlfZJHtxl1agdU/TfW2L+qJ7+JPY
|
|
||||||
cayjq2xKTLRNXOf2iV29GRRovLiqA+Dx0+cAwsScwreHMp3U4k3GkeHVoR6fldV4
|
|
||||||
bVAM8GRl3CYVFePiqAbamKP1BSys44JOINWbWyd94JxzEAwXWz//Es0h73AzeRfK
|
|
||||||
ueORqzdoOGrVc74+HGlAHhqO1Gg7jMMmtkzCEuav+cGHYnMRMOngGR3q47aTJTVb
|
|
||||||
5UdP0oD4OlADPFVa6q0LCqN/IFlebWMh9pXYw7Wpek63oNuZHTfNPq4S1AUM2HJm
|
|
||||||
C3yzaOG9VAdYfLneJC4ldY4CVt1FKckfaXp5OAaMr71DI74e4CcEswlUupZJLZKV
|
|
||||||
TJRjQD15bnXGhHDqU4w3RmzpCWMh2mf4m4VMYQyObl3TtlX+gVvzIhDS5+mXqutB
|
|
||||||
F1pdXwaHHkTb2PLLxpwOGrnsp8XoW74tsylcYirQg8jSFMbgxfwgIjEIuRGXeDkT
|
|
||||||
B4QzmQ4SxsbLiH7etV6Fznl1h569Z4DO9OOs4i0ZzIjdhPDQtAs=
|
|
||||||
=TatG
|
|
||||||
-----END PGP SIGNATURE-----
|
|
BIN
Python-3.11.13.tar.xz
(Stored with Git LFS)
Normal file
BIN
Python-3.11.13.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
1
Python-3.11.13.tar.xz.sigstore
Normal file
1
Python-3.11.13.tar.xz.sigstore
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"mediaType": "application/vnd.dev.sigstore.bundle.v0.3+json", "verificationMaterial": {"certificate": {"rawBytes": "MIICzjCCAlSgAwIBAgIUfnOGm4U1QCsCXWiDvPy5Tgni2HUwCgYIKoZIzj0EAwMwNzEVMBMGA1UEChMMc2lnc3RvcmUuZGV2MR4wHAYDVQQDExVzaWdzdG9yZS1pbnRlcm1lZGlhdGUwHhcNMjUwNjAzMTkyNzM1WhcNMjUwNjAzMTkzNzM1WjAAMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEpTsf/wrCdu4Domf4WOtO4CLkj51wmj4iesYv5N6DYhghPjqQFwGYI9gFc/WX6QMIWh5YHU2NGxrmM7KfbAYzz6OCAXMwggFvMA4GA1UdDwEB/wQEAwIHgDATBgNVHSUEDDAKBggrBgEFBQcDAzAdBgNVHQ4EFgQUkQ2/O4Fivj1bTq7NTQczm1RdtYAwHwYDVR0jBBgwFoAU39Ppz1YkEZb5qNjpKFWixi4YZD8wIgYDVR0RAQH/BBgwFoEUcGFibG9nc2FsQHB5dGhvbi5vcmcwKQYKKwYBBAGDvzABAQQbaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tMCsGCisGAQQBg78wAQgEHQwbaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tMIGLBgorBgEEAdZ5AgQCBH0EewB5AHcA3T0wasbHETJjGR4cmWc3AqJKXrjePK3/h4pygC8p7o4AAAGXN0NwGwAABAMASDBGAiEA6pD8PjS+5z2SQre/NS/wOdFSjVMsxvtfF6A1jg+1T3YCIQDC44S/Z3c0dNddM7EkE+A3j7Vft3hqRUoFkNe4U6g5qTAKBggqhkjOPQQDAwNoADBlAjA6lBI2r3KCZFc+2affpH3S3Xj3gMOKh8Lr5Z7TgkGp3Q6QsnExGmJJ0leXhqH6rQkCMQDfxk/6DyhbO7KTrIUfmrbZoa7dV75cresJS69Xk67XN57qsqY52DZj9o4fbUIw4ro="}, "tlogEntries": [{"logIndex": "228953871", "logId": {"keyId": "wNI9atQGlz+VWfO6LRygH4QUfY/8W4RFwiT5i5WRgB0="}, "kindVersion": {"kind": "hashedrekord", "version": "0.0.1"}, "integratedTime": "1748978856", "inclusionPromise": {"signedEntryTimestamp": "MEUCIQC9nXmfcRqyOL2Zmw1zI7+kulTbmDE3Yfzew81mXJGU4QIgF8Uhdg2uzttSA6erOuEchX68PCyJ0cVFHE0XJX2+ZfE="}, "inclusionProof": {"logIndex": "107049609", "rootHash": "Ilofw5POqC/C3zqfrdMQP1DyhNW+UfB9fHdjrbK6qaM=", "treeSize": "107049610", "hashes": ["AcD1iyjU7nuIPqAq29ynz7PEdq6zPXglj6e2tkH+/do=", "1BNDCN01B3dbUo/TfLaQgKIYTvPyrkcrHKd69GxuF2E=", "t59A0CV2pHM2S9AgZgcEA6FbXhgNZGo0jMRIXHiqsJ0=", "bCrkgWpJ8MBic+mIfCRsKi+5XAMqgM8Lc6G0LLfzZ7M=", "4iwdOrGkcqdN0qqZUx/gv8a8qpLMqVj8aXRVmhQ558c=", "mAX/zvx1jR0ujLtDApsQpHyxmoDGidClHMOn0BX1aQA=", "u5LKLBPTYgXZg0fBi6/8LuEeNy3EBAxJF0AkkB4Co6E=", "SPUVncwJRVX/n/RICCYqLpAzraqx7S0eMdXRr1RLRgg=", "uEJFtwcGQJMd9kjQhkXb7gl2WD3WMElCc15uDFvFGxs=", "VdOKzpQhJlpXgijzXANf/hNlje1G/N1kUuVnKNskkso=", "mta5fH/gFwxJ/0fT8yGpn3sFCY0G1RY555Iflm0LInM=", "7v8qPHNDLerpduaMx06eb/MwgoQwczTn/cYGKX/9wZ4="], "checkpoint": {"envelope": "rekor.sigstore.dev - 1193050959916656506\n107049610\nIlofw5POqC/C3zqfrdMQP1DyhNW+UfB9fHdjrbK6qaM=\n\n\u2014 rekor.sigstore.dev wNI9ajBGAiEAjtzTnsnrGx0G3Dg99s89cPUh6EA+cxkicQ9j4qYU60wCIQCKcAL4kdakbq2JrBVgk7bRNf3FoJRrEI6SCjv16f7Crg==\n"}}, "canonicalizedBody": "eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI4ZmI1ZjlmYmM3NjA5ZmE4MjJjYjMxNTQ5ODg0NTc1ZGI3ZmQ5NjU3Y2JmZmI4OTUxMGI1ZDc5NzU5NjNhODNhIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FVUNJUUM5Q1JZRjNSWGUzdDNxQlBJd2UrR3pMMTJCOXVLTjIrRFpWa2JjZW1FTS93SWdPMDFKaVhnbUJxZEN5RVhoM05JUEt5QlRBb2hpcjZHTkhZdXhiSUxKNDlRPSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCRFJWSlVTVVpKUTBGVVJTMHRMUzB0Q2sxSlNVTjZha05EUVd4VFowRjNTVUpCWjBsVlptNVBSMjAwVlRGUlEzTkRXRmRwUkhaUWVUVlVaMjVwTWtoVmQwTm5XVWxMYjFwSmVtb3dSVUYzVFhjS1RucEZWazFDVFVkQk1WVkZRMmhOVFdNeWJHNWpNMUoyWTIxVmRWcEhWakpOVWpSM1NFRlpSRlpSVVVSRmVGWjZZVmRrZW1SSE9YbGFVekZ3WW01U2JBcGpiVEZzV2tkc2FHUkhWWGRJYUdOT1RXcFZkMDVxUVhwTlZHdDVUbnBOTVZkb1kwNU5hbFYzVG1wQmVrMVVhM3BPZWsweFYycEJRVTFHYTNkRmQxbElDa3R2V2tsNmFqQkRRVkZaU1V0dldrbDZhakJFUVZGalJGRm5RVVZ3VkhObUwzZHlRMlIxTkVSdmJXWTBWMDkwVHpSRFRHdHFOVEYzYldvMGFXVnpXWFlLTlU0MlJGbG9aMmhRYW5GUlJuZEhXVWs1WjBaakwxZFlObEZOU1Zkb05WbElWVEpPUjNoeWJVMDNTMlppUVZsNmVqWlBRMEZZVFhkblowWjJUVUUwUndwQk1WVmtSSGRGUWk5M1VVVkJkMGxJWjBSQlZFSm5UbFpJVTFWRlJFUkJTMEpuWjNKQ1owVkdRbEZqUkVGNlFXUkNaMDVXU0ZFMFJVWm5VVlZyVVRJdkNrODBSbWwyYWpGaVZIRTNUbFJSWTNwdE1WSmtkRmxCZDBoM1dVUldVakJxUWtKbmQwWnZRVlV6T1ZCd2VqRlphMFZhWWpWeFRtcHdTMFpYYVhocE5Ga0tXa1E0ZDBsbldVUldVakJTUVZGSUwwSkNaM2RHYjBWVlkwZEdhV0pIT1c1ak1rWnpVVWhDTldSSGFIWmlhVFYyWTIxamQwdFJXVXRMZDFsQ1FrRkhSQXAyZWtGQ1FWRlJZbUZJVWpCalNFMDJUSGs1YUZreVRuWmtWelV3WTNrMWJtSXlPVzVpUjFWMVdUSTVkRTFEYzBkRGFYTkhRVkZSUW1jM09IZEJVV2RGQ2toUmQySmhTRkl3WTBoTk5reDVPV2haTWs1MlpGYzFNR041Tlc1aU1qbHVZa2RWZFZreU9YUk5TVWRNUW1kdmNrSm5SVVZCWkZvMVFXZFJRMEpJTUVVS1pYZENOVUZJWTBFelZEQjNZWE5pU0VWVVNtcEhValJqYlZkak0wRnhTa3RZY21wbFVFc3pMMmcwY0hsblF6aHdOMjgwUVVGQlIxaE9NRTUzUjNkQlFRcENRVTFCVTBSQ1IwRnBSVUUyY0VRNFVHcFRLelY2TWxOUmNtVXZUbE12ZDA5a1JsTnFWazF6ZUhaMFprWTJRVEZxWnlzeFZETlpRMGxSUkVNME5GTXZDbG96WXpCa1RtUmtUVGRGYTBVclFUTnFOMVptZEROb2NWSlZiMFpyVG1VMFZUWm5OWEZVUVV0Q1oyZHhhR3RxVDFCUlVVUkJkMDV2UVVSQ2JFRnFRVFlLYkVKSk1uSXpTME5hUm1Nck1tRm1abkJJTTFNeldHb3paMDFQUzJnNFRISTFXamRVWjJ0SGNETlJObEZ6YmtWNFIyMUtTakJzWlZob2NVZzJjbEZyUXdwTlVVUm1lR3N2TmtSNWFHSlBOMHRVY2tsVlptMXlZbHB2WVRka1ZqYzFZM0psYzBwVE5qbFlhelkzV0U0MU4zRnpjVmsxTWtSYWFqbHZOR1ppVlVsM0NqUnliejBLTFMwdExTMUZUa1FnUTBWU1ZFbEdTVU5CVkVVdExTMHRMUW89In19fX0="}], "timestampVerificationData": {}}, "messageSignature": {"messageDigest": {"algorithm": "SHA2_256", "digest": "j7X5+8dgn6giyzFUmIRXXbf9llfL/7iVELXXl1ljqDo="}, "signature": "MEUCIQC9CRYF3RXe3t3qBPIwe+GzL12B9uKN2+DZVkbcemEM/wIgO01JiXgmBqdCyEXh3NIPKyBTAohir6GNHYuxbILJ49Q="}}
|
29
add-loongarch64-support.patch
Normal file
29
add-loongarch64-support.patch
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
Description: Add platform triplets for LoongArch.
|
||||||
|
|
||||||
|
---
|
||||||
|
configure.ac | 14 ++++++++++++++
|
||||||
|
1 file changed, 14 insertions(+)
|
||||||
|
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -976,6 +976,20 @@ cat > conftest.c <<EOF
|
||||||
|
hppa-linux-gnu
|
||||||
|
# elif defined(__ia64__)
|
||||||
|
ia64-linux-gnu
|
||||||
|
+# elif defined(__loongarch__)
|
||||||
|
+# if defined(__loongarch_lp64)
|
||||||
|
+# if defined(__loongarch_soft_float)
|
||||||
|
+ loongarch64-linux-gnusf
|
||||||
|
+# elif defined(__loongarch_single_float)
|
||||||
|
+ loongarch64-linux-gnuf32
|
||||||
|
+# elif defined(__loongarch_double_float)
|
||||||
|
+ loongarch64-linux-gnu
|
||||||
|
+# else
|
||||||
|
+# error unknown platform triplet
|
||||||
|
+# endif
|
||||||
|
+# else
|
||||||
|
+# error unknown platform triplet
|
||||||
|
+# endif
|
||||||
|
# elif defined(__m68k__) && !defined(__mcoldfire__)
|
||||||
|
m68k-linux-gnu
|
||||||
|
# elif defined(__mips_hard_float) && defined(__mips_isa_rev) && (__mips_isa_rev >=6) && defined(_MIPSEL)
|
@@ -29,7 +29,7 @@
|
|||||||
Create a Python.framework rather than a traditional Unix install. Optional
|
Create a Python.framework rather than a traditional Unix install. Optional
|
||||||
--- a/Misc/NEWS
|
--- a/Misc/NEWS
|
||||||
+++ b/Misc/NEWS
|
+++ b/Misc/NEWS
|
||||||
@@ -9774,7 +9774,7 @@ C API
|
@@ -9911,7 +9911,7 @@ C API
|
||||||
- bpo-40939: Removed documentation for the removed ``PyParser_*`` C API.
|
- bpo-40939: Removed documentation for the removed ``PyParser_*`` C API.
|
||||||
|
|
||||||
- bpo-43795: The list in :ref:`limited-api-list` now shows the public name
|
- bpo-43795: The list in :ref:`limited-api-list` now shows the public name
|
||||||
|
@@ -1,17 +0,0 @@
|
|||||||
---
|
|
||||||
Lib/test/test_posix.py | 2 +-
|
|
||||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
||||||
|
|
||||||
Index: Python-3.11.8/Lib/test/test_posix.py
|
|
||||||
===================================================================
|
|
||||||
--- Python-3.11.8.orig/Lib/test/test_posix.py
|
|
||||||
+++ Python-3.11.8/Lib/test/test_posix.py
|
|
||||||
@@ -430,7 +430,7 @@ class PosixTester(unittest.TestCase):
|
|
||||||
def test_posix_fadvise(self):
|
|
||||||
fd = os.open(os_helper.TESTFN, os.O_RDONLY)
|
|
||||||
try:
|
|
||||||
- posix.posix_fadvise(fd, 0, 0, posix.POSIX_FADV_WILLNEED)
|
|
||||||
+ posix.posix_fadvise(fd, 0, 0, posix.POSIX_FADV_RANDOM)
|
|
||||||
finally:
|
|
||||||
os.close(fd)
|
|
||||||
|
|
@@ -1,3 +1,4 @@
|
|||||||
addFilter("pem-certificate.*/usr/lib.*/python.*/test/*.pem")
|
addFilter("pem-certificate.*/usr/lib.*/python.*/test/*.pem")
|
||||||
addFilter("devel-file-in-non-devel-package.*/usr/lib.*/python.*/tests/*.c")
|
addFilter("devel-file-in-non-devel-package.*/usr/lib.*/python.*/tests/*.c")
|
||||||
addFilter("devel-file-in-non-devel-package.*/usr/lib.*/python.*/test/*.cpp")
|
addFilter("devel-file-in-non-devel-package.*/usr/lib.*/python.*/test/*.cpp")
|
||||||
|
addFilter("python-bytecode-inconsistent-mtime.*\.pyc")
|
||||||
|
@@ -1,3 +1,204 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Aug 1 20:09:24 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
|
- Add CVE-2025-8194-tarfile-no-neg-offsets.patch which now
|
||||||
|
validates archives to ensure member offsets are non-negative
|
||||||
|
(gh#python/cpython#130577, CVE-2025-8194, bsc#1247249).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Jul 2 14:47:20 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
|
- Add CVE-2025-6069-quad-complex-HTMLParser.patch to avoid worst
|
||||||
|
case quadratic complexity when processing certain crafted
|
||||||
|
malformed inputs with HTMLParser (CVE-2025-6069, bsc#1244705).
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jul 1 08:19:52 UTC 2025 - Daniel Garcia <daniel.garcia@suse.com>
|
||||||
|
|
||||||
|
- Use one core to build doc. This will make sphinx doc build
|
||||||
|
reproducible.
|
||||||
|
bsc#1243155
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jun 9 17:19:32 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
|
- Update to 3.11.13:
|
||||||
|
- Security
|
||||||
|
- gh-135034: Fixes multiple issues that allowed tarfile
|
||||||
|
extraction filters (filter="data" and filter="tar")
|
||||||
|
to be bypassed using crafted symlinks and hard links.
|
||||||
|
Addresses CVE-2024-12718 (bsc#1244056), CVE-2025-4138
|
||||||
|
(bsc#1244059), CVE-2025-4330 (bsc#1244060), and
|
||||||
|
CVE-2025-4517 (bsc#1244032). Also addresses CVE-2025-4435
|
||||||
|
(gh#135034, bsc#1244061).
|
||||||
|
- gh-133767: Fix use-after-free in the “unicode-escape”
|
||||||
|
decoder with a non-“strict” error handler (CVE-2025-4516,
|
||||||
|
bsc#1243273).
|
||||||
|
- gh-128840: Short-circuit the processing of long IPv6
|
||||||
|
addresses early in ipaddress to prevent excessive memory
|
||||||
|
consumption and a minor denial-of-service.
|
||||||
|
- Library
|
||||||
|
- gh-128840: Fix parsing long IPv6 addresses with embedded
|
||||||
|
IPv4 address.
|
||||||
|
- gh-134062: ipaddress: fix collisions in __hash__() for
|
||||||
|
IPv4Network and IPv6Network objects.
|
||||||
|
- gh-123409: Fix ipaddress.IPv6Address.reverse_pointer output
|
||||||
|
according to RFC 3596, §2.5. Patch by Bénédikt Tran.
|
||||||
|
- bpo-43633: Improve the textual representation of
|
||||||
|
IPv4-mapped IPv6 addresses (RFC 4291 Sections 2.2, 2.5.5.2)
|
||||||
|
in ipaddress. Patch by Oleksandr Pavliuk.
|
||||||
|
- Remove upstreamed patches:
|
||||||
|
- gh-126572-test_ssl-no-stop-ThreadedEchoServer-OSError.patch
|
||||||
|
- CVE-2025-4516-DecodeError-handler.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu May 22 13:01:17 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
|
- Add CVE-2025-4516-DecodeError-handler.patch fixing
|
||||||
|
CVE-2025-4516 (bsc#1243273) blocking DecodeError handling
|
||||||
|
vulnerability, which could lead to DoS.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat May 17 10:02:27 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
|
- Use extended %autopatch.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Sat May 10 11:38:24 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
|
- Remove python-3.3.0b1-test-posix_fadvise.patch (not needed
|
||||||
|
since kernel 3.6-rc1)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Apr 18 14:05:38 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
|
- Update to 3.11.12:
|
||||||
|
- gh-131809: Update bundled libexpat to 2.7.1
|
||||||
|
- gh-131261: Upgrade to libexpat 2.7.0
|
||||||
|
- gh-105704: When using urllib.parse.urlsplit() and
|
||||||
|
urllib.parse.urlparse() host parsing would not reject domain
|
||||||
|
names containing square brackets ([ and ]). Square brackets
|
||||||
|
are only valid for IPv6 and IPvFuture hosts according to RFC
|
||||||
|
3986 Section 3.2.2 (bsc#1236705, CVE-2025-0938,
|
||||||
|
gh#python/cpython#105704).
|
||||||
|
- gh-121284: Fix bug in the folding of rfc2047 encoded-words
|
||||||
|
when flattening an email message using a modern email
|
||||||
|
policy. Previously when an encoded-word was too long for
|
||||||
|
a line, it would be decoded, split across lines, and
|
||||||
|
re-encoded. But commas and other special characters in the
|
||||||
|
original text could be left unencoded and unquoted. This
|
||||||
|
could theoretically be used to spoof header lines using a
|
||||||
|
carefully constructed encoded-word if the resulting rendered
|
||||||
|
email was transmitted or re-parsed.
|
||||||
|
- gh-80222: Fix bug in the folding of quoted strings
|
||||||
|
when flattening an email message using a modern email
|
||||||
|
policy. Previously when a quoted string was folded so that
|
||||||
|
it spanned more than one line, the surrounding quotes and
|
||||||
|
internal escapes would be omitted. This could theoretically
|
||||||
|
be used to spoof header lines using a carefully constructed
|
||||||
|
quoted string if the resulting rendered email was transmitted
|
||||||
|
or re-parsed.
|
||||||
|
- gh-119511: Fix a potential denial of service in the imaplib
|
||||||
|
module. When connecting to a malicious server, it could
|
||||||
|
cause an arbitrary amount of memory to be allocated. On many
|
||||||
|
systems this is harmless as unused virtual memory is only
|
||||||
|
a mapping, but if this hit a virtual address size limit
|
||||||
|
it could lead to a MemoryError or other process crash. On
|
||||||
|
unusual systems or builds where all allocated memory is
|
||||||
|
touched and backed by actual ram or storage it could’ve
|
||||||
|
consumed resources doing so until similarly crashing.
|
||||||
|
- gh-127257: In ssl, system call failures that OpenSSL reports
|
||||||
|
using ERR_LIB_SYS are now raised as OSError.
|
||||||
|
- gh-121277: Writers of CPython’s documentation can now use
|
||||||
|
next as the version for the versionchanged, versionadded,
|
||||||
|
deprecated directives.
|
||||||
|
- gh-106883: Disable GC during the _PyThread_CurrentFrames()
|
||||||
|
and _PyThread_CurrentExceptions() calls to avoid the
|
||||||
|
interpreter to deadlock.
|
||||||
|
- Remove upstreamed patch:
|
||||||
|
- CVE-2025-0938-sq-brackets-domain-names.patch
|
||||||
|
- Add gh-126572-test_ssl-no-stop-ThreadedEchoServer-OSError.patch
|
||||||
|
which makes test_ssl not to stop ThreadedEchoServer on OSError,
|
||||||
|
which makes test_ssl pass with OpenSSL 3.5 (bsc#1241067,
|
||||||
|
gh#python/cpython!126572)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Mar 12 15:05:46 UTC 2025 - Bernhard Wiedemann <bwiedemann@suse.com>
|
||||||
|
|
||||||
|
- Allow to disable PGO
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Mar 10 15:44:31 UTC 2025 - Bernhard Wiedemann <bwiedemann@suse.com>
|
||||||
|
|
||||||
|
- Skip PGO with %want_reproducible_builds (bsc#1239210)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Feb 4 14:43:13 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
|
- Add CVE-2025-0938-sq-brackets-domain-names.patch which
|
||||||
|
disallows square brackets ([ and ]) in domain names for parsed
|
||||||
|
URLs (bsc#1236705, CVE-2025-0938, gh#python/cpython#105704)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jan 27 09:00:48 UTC 2025 - Daniel Garcia <daniel.garcia@suse.com>
|
||||||
|
|
||||||
|
- Configure externally_managed with a bcond
|
||||||
|
https://en.opensuse.org/openSUSE:Python:Externally_managed
|
||||||
|
bsc#1228165
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Dec 4 21:40:41 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
|
- Update to 3.11.11:
|
||||||
|
- Tools/Demos
|
||||||
|
- gh-123418: Update GitHub CI workflows to use OpenSSL 3.0.15
|
||||||
|
and multissltests to use 3.0.15, 3.1.7, and 3.2.3.
|
||||||
|
- Tests
|
||||||
|
- gh-125041: Re-enable skipped tests for zlib on the
|
||||||
|
s390x architecture: only skip checks of the compressed
|
||||||
|
bytes, which can be different between zlib’s software
|
||||||
|
implementation and the hardware-accelerated implementation.
|
||||||
|
- Security
|
||||||
|
- gh-126623: Upgrade libexpat to 2.6.4
|
||||||
|
- gh-122792: Changed IPv4-mapped ipaddress.IPv6Address to
|
||||||
|
consistently use the mapped IPv4 address value for deciding
|
||||||
|
properties. Properties which have their behavior fixed are
|
||||||
|
is_multicast, is_reserved, is_link_local, is_global, and
|
||||||
|
is_unspecified.
|
||||||
|
- Library
|
||||||
|
- gh-124651: Properly quote template strings in venv
|
||||||
|
activation scripts (bsc#1232241, CVE-2024-9287).
|
||||||
|
- Removed upstreamed patches:
|
||||||
|
- CVE-2024-9287-venv_path_unquoted.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Dec 3 08:21:35 UTC 2024 - John Paul Adrian Glaubitz <adrian.glaubitz@suse.com>
|
||||||
|
|
||||||
|
- Add add-loongarch64-support.patch to support loongarch64
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Dec 2 22:50:07 UTC 2024 - Matej Cepl <mcepl@suse.com>
|
||||||
|
|
||||||
|
- Fix changelog
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Nov 11 12:43:40 UTC 2024 - Daniel Garcia <daniel.garcia@suse.com>
|
||||||
|
|
||||||
|
- Remove -IVendor/ from python-config boo#1231795
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Nov 1 16:32:10 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
|
- Add CVE-2024-9287-venv_path_unquoted.patch to properly quote
|
||||||
|
path names provided when creating a virtual environment
|
||||||
|
(bsc#1232241, CVE-2024-9287)
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Oct 2 16:18:29 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
|
- Drop .pyc files from docdir for reproducible builds
|
||||||
|
(bsc#1230906).
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Sep 9 16:53:07 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
|
Mon Sep 9 16:53:07 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
@@ -81,6 +282,9 @@ Mon Sep 9 16:53:07 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
|
|||||||
- CVE-2024-4032-private-IP-addrs.patch
|
- CVE-2024-4032-private-IP-addrs.patch
|
||||||
- CVE-2024-6923-email-hdr-inject.patch
|
- CVE-2024-6923-email-hdr-inject.patch
|
||||||
- CVE-2024-8088-inf-loop-zipfile_Path.patch
|
- CVE-2024-8088-inf-loop-zipfile_Path.patch
|
||||||
|
(renamed from CVE-2024-8088-zipfile-Path-sanitization.patch)
|
||||||
|
- CVE-2024-6232-ReDOS-backtrack-tarfile.patch
|
||||||
|
- CVE-2024-7592-quad-complex-cookies.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Sep 2 09:44:26 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
|
Mon Sep 2 09:44:26 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
|
||||||
@@ -122,7 +326,7 @@ Thu Jul 18 22:37:07 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
|
|||||||
Mon Jul 15 12:14:05 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
|
Mon Jul 15 12:14:05 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
- Stop using %%defattr, it seems to be breaking proper executable
|
- Stop using %%defattr, it seems to be breaking proper executable
|
||||||
attributes on /usr/bin/ scripts (bsc#1227378).
|
attributes on /usr/bin/ scripts (bsc#1227378).
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Jul 2 10:32:58 UTC 2024 - Daniel Garcia <daniel.garcia@suse.com>
|
Tue Jul 2 10:32:58 UTC 2024 - Daniel Garcia <daniel.garcia@suse.com>
|
||||||
@@ -167,6 +371,7 @@ Mon Apr 8 05:44:04 UTC 2024 - Daniel Garcia <daniel.garcia@suse.com>
|
|||||||
- Remove not needed upstream patches:
|
- Remove not needed upstream patches:
|
||||||
* libexpat260.patch
|
* libexpat260.patch
|
||||||
* CVE-2023-6597-TempDir-cleaning-symlink.patch, bsc#1219666
|
* CVE-2023-6597-TempDir-cleaning-symlink.patch, bsc#1219666
|
||||||
|
* CVE-2024-0397-memrace_ssl.SSLContext_cert_store.patch
|
||||||
|
|
||||||
- Update to 3.11.9:
|
- Update to 3.11.9:
|
||||||
* Security
|
* Security
|
||||||
@@ -336,8 +541,9 @@ Mon Apr 8 05:44:04 UTC 2024 - Daniel Garcia <daniel.garcia@suse.com>
|
|||||||
- gh-60346: Fix ArgumentParser inconsistent with parse_known_args.
|
- gh-60346: Fix ArgumentParser inconsistent with parse_known_args.
|
||||||
- gh-100985: Update HTTPSConnection to consistently wrap IPv6
|
- gh-100985: Update HTTPSConnection to consistently wrap IPv6
|
||||||
Addresses when using a proxy.
|
Addresses when using a proxy.
|
||||||
- gh-100884: email: fix misfolding of comma in address-lists over
|
- gh-100884: email: fix misfolding of comma in address-lists
|
||||||
multiple lines in combination with unicode encoding.
|
over multiple lines in combination with unicode encoding
|
||||||
|
(bsc#1238450 CVE-2025-1795)
|
||||||
- gh-95782: Fix io.BufferedReader.tell(),
|
- gh-95782: Fix io.BufferedReader.tell(),
|
||||||
io.BufferedReader.seek(), _pyio.BufferedReader.tell(),
|
io.BufferedReader.seek(), _pyio.BufferedReader.tell(),
|
||||||
io.BufferedRandom.tell(), io.BufferedRandom.seek() and
|
io.BufferedRandom.tell(), io.BufferedRandom.seek() and
|
||||||
@@ -461,7 +667,7 @@ Fri Feb 23 01:06:42 UTC 2024 - Matej Cepl <mcepl@suse.com>
|
|||||||
Tue Feb 20 22:14:02 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
|
Tue Feb 20 22:14:02 UTC 2024 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
- Remove double definition of /usr/bin/idle%%{version} in
|
- Remove double definition of /usr/bin/idle%%{version} in
|
||||||
%%files.
|
%%files.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Feb 15 10:29:07 UTC 2024 - Daniel Garcia <daniel.garcia@suse.com>
|
Thu Feb 15 10:29:07 UTC 2024 - Daniel Garcia <daniel.garcia@suse.com>
|
||||||
@@ -719,7 +925,8 @@ Thu Feb 8 07:27:40 UTC 2024 - Daniel Garcia <daniel.garcia@suse.com>
|
|||||||
METH_FASTCALL | METH_KEYWORDS calling convention. Only the
|
METH_FASTCALL | METH_KEYWORDS calling convention. Only the
|
||||||
positional parameter count was checked; any keyword argument
|
positional parameter count was checked; any keyword argument
|
||||||
passed would be silently accepted.
|
passed would be silently accepted.
|
||||||
|
- Remove upstreamed patches:
|
||||||
|
- CVE-2024-0450-zipfile-avoid-quoted-overlap-zipbomb.patch
|
||||||
- Refresh all patches:
|
- Refresh all patches:
|
||||||
- CVE-2023-27043-email-parsing-errors.patch
|
- CVE-2023-27043-email-parsing-errors.patch
|
||||||
- F00251-change-user-install-location.patch
|
- F00251-change-user-install-location.patch
|
||||||
@@ -1380,12 +1587,12 @@ Wed Sep 6 07:52:11 UTC 2023 - Daniel Garcia <daniel.garcia@suse.com>
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Aug 10 09:33:26 UTC 2023 - Dirk Müller <dmueller@suse.com>
|
Thu Aug 10 09:33:26 UTC 2023 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|
||||||
- restrict PEP668 to ALP/Tumbleweed
|
- restrict PEP668 to ALP/Tumbleweed
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Aug 4 06:37:41 UTC 2023 - Dirk Müller <dmueller@suse.com>
|
Fri Aug 4 06:37:41 UTC 2023 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|
||||||
- add externally_managed.in to label this build as PEP-668 managed
|
- add externally_managed.in to label this build as PEP-668 managed
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Aug 3 14:53:38 UTC 2023 - Matej Cepl <mcepl@suse.com>
|
Thu Aug 3 14:53:38 UTC 2023 - Matej Cepl <mcepl@suse.com>
|
||||||
@@ -2740,7 +2947,7 @@ Sat Mar 26 22:52:45 UTC 2022 - Matej Cepl <mcepl@suse.com>
|
|||||||
Tue Feb 22 05:53:06 UTC 2022 - Steve Kowalik <steven.kowalik@suse.com>
|
Tue Feb 22 05:53:06 UTC 2022 - Steve Kowalik <steven.kowalik@suse.com>
|
||||||
|
|
||||||
- Add patch support-expat-245.patch:
|
- Add patch support-expat-245.patch:
|
||||||
* Support Expat >= 2.4.5
|
* Support Expat >= 2.4.5
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Feb 15 23:05:55 UTC 2022 - Matej Cepl <mcepl@suse.com>
|
Tue Feb 15 23:05:55 UTC 2022 - Matej Cepl <mcepl@suse.com>
|
||||||
@@ -2930,7 +3137,7 @@ Sat Jun 5 21:21:38 UTC 2021 - Matej Cepl <mcepl@suse.com>
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Jun 4 21:36:30 UTC 2021 - Dirk Müller <dmueller@suse.com>
|
Fri Jun 4 21:36:30 UTC 2021 - Dirk Müller <dmueller@suse.com>
|
||||||
|
|
||||||
- allow build with Sphinx >= 3.x
|
- allow build with Sphinx >= 3.x
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Jun 2 13:12:04 UTC 2021 - Dan Čermák <dcermak@suse.com>
|
Wed Jun 2 13:12:04 UTC 2021 - Dan Čermák <dcermak@suse.com>
|
||||||
@@ -3482,7 +3689,7 @@ Sat Dec 12 14:29:33 UTC 2020 - Matej Cepl <mcepl@suse.com>
|
|||||||
Thu Dec 10 00:26:51 UTC 2020 - Benjamin Greiner <code@bnavigator.de>
|
Thu Dec 10 00:26:51 UTC 2020 - Benjamin Greiner <code@bnavigator.de>
|
||||||
|
|
||||||
- Last try before this results in an editwar:
|
- Last try before this results in an editwar:
|
||||||
* remove importlib_resources and importlib-metadata
|
* remove importlib_resources and importlib-metadata
|
||||||
provides/obsoletes
|
provides/obsoletes
|
||||||
* import importlib_resources is not the same as
|
* import importlib_resources is not the same as
|
||||||
import importlib.resources, same for metadata
|
import importlib.resources, same for metadata
|
||||||
@@ -3599,54 +3806,54 @@ Tue Jul 21 09:53:06 UTC 2020 - Callum Farmer <callumjfarmer13@gmail.com>
|
|||||||
- Removed CVE-2019-20907_tarfile-inf-loop.patch: fixed in upstream
|
- Removed CVE-2019-20907_tarfile-inf-loop.patch: fixed in upstream
|
||||||
- Removed recursion.tar: contained in upstream
|
- Removed recursion.tar: contained in upstream
|
||||||
- Update to 3.9.0b5:
|
- Update to 3.9.0b5:
|
||||||
- bpo-41304: Fixes python3x._pth being ignored on Windows, caused
|
- bpo-41304: Fixes python3x._pth being ignored on Windows, caused
|
||||||
by the fix for bpo-29778 (CVE-2020-15801).
|
by the fix for bpo-29778 (CVE-2020-15801).
|
||||||
- bpo-41162: Audit hooks are now cleared later during
|
- bpo-41162: Audit hooks are now cleared later during
|
||||||
finalization to avoid missing events.
|
finalization to avoid missing events.
|
||||||
- bpo-29778: Ensure python3.dll is loaded from correct locations
|
- bpo-29778: Ensure python3.dll is loaded from correct locations
|
||||||
when Python is embedded (CVE-2020-15523).
|
when Python is embedded (CVE-2020-15523).
|
||||||
- bpo-39603: Prevent http header injection by rejecting control
|
- bpo-39603: Prevent http header injection by rejecting control
|
||||||
characters in http.client.putrequest(…).
|
characters in http.client.putrequest(…).
|
||||||
- bpo-41295: Resolve a regression in CPython 3.8.4 where defining
|
- bpo-41295: Resolve a regression in CPython 3.8.4 where defining
|
||||||
“__setattr__” in a multi-inheritance setup and
|
“__setattr__” in a multi-inheritance setup and
|
||||||
calling up the hierarchy chain could fail if builtins/extension
|
calling up the hierarchy chain could fail if builtins/extension
|
||||||
types were involved in the base types.
|
types were involved in the base types.
|
||||||
- bpo-41247: Always cache the running loop holder when running
|
- bpo-41247: Always cache the running loop holder when running
|
||||||
asyncio.set_running_loop.
|
asyncio.set_running_loop.
|
||||||
- bpo-41252: Fix incorrect refcounting in
|
- bpo-41252: Fix incorrect refcounting in
|
||||||
_ssl.c’s _servername_callback().
|
_ssl.c’s _servername_callback().
|
||||||
- bpo-41215: Use non-NULL default values in the PEG parser
|
- bpo-41215: Use non-NULL default values in the PEG parser
|
||||||
keyword list to overcome a bug that was '
|
keyword list to overcome a bug that was '
|
||||||
preventing Python from being properly compiled when using the
|
preventing Python from being properly compiled when using the
|
||||||
XLC compiler. Patch by Pablo Galindo.
|
XLC compiler. Patch by Pablo Galindo.
|
||||||
- bpo-41218: Python 3.8.3 had a regression where compiling with
|
- bpo-41218: Python 3.8.3 had a regression where compiling with
|
||||||
ast.PyCF_ALLOW_TOP_LEVEL_AWAIT would
|
ast.PyCF_ALLOW_TOP_LEVEL_AWAIT would
|
||||||
aggressively mark list comprehension with CO_COROUTINE. Now only
|
aggressively mark list comprehension with CO_COROUTINE. Now only
|
||||||
list comprehension making use of async/await will tagged as so.
|
list comprehension making use of async/await will tagged as so.
|
||||||
- bpo-41175: Guard against a NULL pointer dereference within
|
- bpo-41175: Guard against a NULL pointer dereference within
|
||||||
bytearrayobject triggered by the bytearray() + bytearray() operation.
|
bytearrayobject triggered by the bytearray() + bytearray() operation.
|
||||||
- bpo-39960: The “hackcheck” that prevents sneaking around a type’s
|
- bpo-39960: The “hackcheck” that prevents sneaking around a type’s
|
||||||
__setattr__() by calling the superclass method was
|
__setattr__() by calling the superclass method was
|
||||||
rewritten to allow C implemented heap types.
|
rewritten to allow C implemented heap types.
|
||||||
- bpo-41288: Unpickling invalid NEWOBJ_EX opcode with the
|
- bpo-41288: Unpickling invalid NEWOBJ_EX opcode with the
|
||||||
C implementation raises now UnpicklingError instead of crashing.
|
C implementation raises now UnpicklingError instead of crashing.
|
||||||
- bpo-39017: Avoid infinite loop when reading specially crafted
|
- bpo-39017: Avoid infinite loop when reading specially crafted
|
||||||
TAR files using the tarfile module (CVE-2019-20907, bsc#1174091).
|
TAR files using the tarfile module (CVE-2019-20907, bsc#1174091).
|
||||||
- bpo-41235: Fix the error handling in ssl.SSLContext.load_dh_params().
|
- bpo-41235: Fix the error handling in ssl.SSLContext.load_dh_params().
|
||||||
- bpo-41207: In distutils.spawn, restore expectation that
|
- bpo-41207: In distutils.spawn, restore expectation that
|
||||||
DistutilsExecError is raised when the command is not found.
|
DistutilsExecError is raised when the command is not found.
|
||||||
- bpo-39168: Remove the __new__ method of typing.Generic.
|
- bpo-39168: Remove the __new__ method of typing.Generic.
|
||||||
- bpo-41194: Fix a crash in the _ast module: it can no longer be
|
- bpo-41194: Fix a crash in the _ast module: it can no longer be
|
||||||
loaded more than once. It now uses a global state rather than a module state.
|
loaded more than once. It now uses a global state rather than a module state.
|
||||||
- bpo-39384: Fixed email.contentmanager to allow set_content() to set a
|
- bpo-39384: Fixed email.contentmanager to allow set_content() to set a
|
||||||
null string.
|
null string.
|
||||||
- bpo-41300: Save files with non-ascii chars.
|
- bpo-41300: Save files with non-ascii chars.
|
||||||
Fix regression released in 3.9.0b4 and 3.8.4.
|
Fix regression released in 3.9.0b4 and 3.8.4.
|
||||||
- bpo-37765: Add keywords to module name completion list.
|
- bpo-37765: Add keywords to module name completion list.
|
||||||
Rewrite Completions section of IDLE doc.
|
Rewrite Completions section of IDLE doc.
|
||||||
- bpo-40170: Revert PyType_HasFeature() change: it reads
|
- bpo-40170: Revert PyType_HasFeature() change: it reads
|
||||||
again directly the PyTypeObject.tp_flags
|
again directly the PyTypeObject.tp_flags
|
||||||
member when the limited C API is not used, rather than always calling
|
member when the limited C API is not used, rather than always calling
|
||||||
PyType_GetFlags() which hides implementation details.
|
PyType_GetFlags() which hides implementation details.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
@@ -4167,7 +4374,7 @@ Wed Jun 5 12:19:09 CEST 2019 - Matej Cepl <mcepl@suse.com>
|
|||||||
pickling costs between processes
|
pickling costs between processes
|
||||||
- typed_ast is merged back to CPython
|
- typed_ast is merged back to CPython
|
||||||
- LOAD_GLOBAL is now 40% faster
|
- LOAD_GLOBAL is now 40% faster
|
||||||
- pickle now uses Protocol 4 by default, improving performance
|
- pickle now uses Protocol 4 by default, improving performance
|
||||||
- Remove patches which were included in the upstream:
|
- Remove patches which were included in the upstream:
|
||||||
- 00251-change-user-install-location.patch
|
- 00251-change-user-install-location.patch
|
||||||
- 00316-mark-bdist_wininst-unsupported.patch
|
- 00316-mark-bdist_wininst-unsupported.patch
|
||||||
@@ -4312,7 +4519,7 @@ Mon Dec 17 17:24:49 CET 2018 - mcepl@suse.com
|
|||||||
|
|
||||||
- Upgrade to 3.7.2rc1:
|
- Upgrade to 3.7.2rc1:
|
||||||
* bugfix release, for the full list of all changes see
|
* bugfix release, for the full list of all changes see
|
||||||
https://docs.python.org/3.7/whatsnew/changelog.html#changelog
|
https://docs.python.org/3.7/whatsnew/changelog.html#changelog
|
||||||
- Make run of the test suite more verbose
|
- Make run of the test suite more verbose
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
@@ -4739,7 +4946,7 @@ Mon Mar 13 14:04:22 UTC 2017 - jmatejek@suse.com
|
|||||||
Sat Feb 25 20:55:57 UTC 2017 - bwiedemann@suse.com
|
Sat Feb 25 20:55:57 UTC 2017 - bwiedemann@suse.com
|
||||||
|
|
||||||
- Add 0001-allow-for-reproducible-builds-of-python-packages.patch
|
- Add 0001-allow-for-reproducible-builds-of-python-packages.patch
|
||||||
upstream https://github.com/python/cpython/pull/296
|
upstream https://github.com/python/cpython/pull/296
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wed Feb 8 12:30:20 UTC 2017 - jmatejek@suse.com
|
Wed Feb 8 12:30:20 UTC 2017 - jmatejek@suse.com
|
||||||
@@ -4805,7 +5012,7 @@ Mon Mar 7 20:38:11 UTC 2016 - toddrme2178@gmail.com
|
|||||||
|
|
||||||
- Add Python-3.5.1-fix_lru_cache_copying.patch
|
- Add Python-3.5.1-fix_lru_cache_copying.patch
|
||||||
Fix copying the lru_cache() wrapper object.
|
Fix copying the lru_cache() wrapper object.
|
||||||
Fixes deep-copying lru_cache regression, which worked on
|
Fixes deep-copying lru_cache regression, which worked on
|
||||||
previous versions of python but fails on python 3.5.
|
previous versions of python but fails on python 3.5.
|
||||||
This fixes a bunch of packages in devel:languages:python3.
|
This fixes a bunch of packages in devel:languages:python3.
|
||||||
See: https://bugs.python.org/issue25447
|
See: https://bugs.python.org/issue25447
|
||||||
@@ -4943,7 +5150,7 @@ Sun Jan 11 13:01:30 UTC 2015 - p.drouand@gmail.com
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sat Oct 18 20:14:54 UTC 2014 - crrodriguez@opensuse.org
|
Sat Oct 18 20:14:54 UTC 2014 - crrodriguez@opensuse.org
|
||||||
|
|
||||||
- Only pkgconfig(x11) is required for build, not the whole
|
- Only pkgconfig(x11) is required for build, not the whole
|
||||||
set of packages provided by xorg-x11-devel metapackage.
|
set of packages provided by xorg-x11-devel metapackage.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
@@ -5003,7 +5210,7 @@ Wed Mar 26 15:24:46 UTC 2014 - jmatejek@suse.com
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Mar 24 17:29:31 UTC 2014 - dmueller@suse.com
|
Mon Mar 24 17:29:31 UTC 2014 - dmueller@suse.com
|
||||||
|
|
||||||
- remove blacklisting of test_posix on aarch64: qemu bug is fixed
|
- remove blacklisting of test_posix on aarch64: qemu bug is fixed
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Mar 17 18:26:58 UTC 2014 - jmatejek@suse.com
|
Mon Mar 17 18:26:58 UTC 2014 - jmatejek@suse.com
|
||||||
@@ -5106,7 +5313,7 @@ Tue Nov 19 14:28:41 UTC 2013 - jmatejek@suse.com
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Oct 15 17:44:08 UTC 2013 - crrodriguez@opensuse.org
|
Tue Oct 15 17:44:08 UTC 2013 - crrodriguez@opensuse.org
|
||||||
|
|
||||||
- build with -DOPENSSL_LOAD_CONF for the same reasons
|
- build with -DOPENSSL_LOAD_CONF for the same reasons
|
||||||
described in the python2 package.
|
described in the python2 package.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
@@ -5118,7 +5325,7 @@ Fri Aug 16 11:35:15 UTC 2013 - jmatejek@suse.com
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Aug 8 14:54:49 UTC 2013 - dvaleev@suse.com
|
Thu Aug 8 14:54:49 UTC 2013 - dvaleev@suse.com
|
||||||
|
|
||||||
- Exclue test_faulthandler from tests on powerpc due to bnc#831629
|
- Exclue test_faulthandler from tests on powerpc due to bnc#831629
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Jun 13 15:05:34 UTC 2013 - jmatejek@suse.com
|
Thu Jun 13 15:05:34 UTC 2013 - jmatejek@suse.com
|
||||||
@@ -5177,7 +5384,7 @@ Fri Mar 1 07:42:21 UTC 2013 - dmueller@suse.com
|
|||||||
|
|
||||||
- add ctypes-libffi-aarch64.patch:
|
- add ctypes-libffi-aarch64.patch:
|
||||||
* import aarch64 support for libffi in _ctypes module
|
* import aarch64 support for libffi in _ctypes module
|
||||||
- add aarch64 to the list of lib64 based archs
|
- add aarch64 to the list of lib64 based archs
|
||||||
- add movetogetdents64.diff:
|
- add movetogetdents64.diff:
|
||||||
* port to getdents64, as SYS_getdents is not implemented everywhere
|
* port to getdents64, as SYS_getdents is not implemented everywhere
|
||||||
|
|
||||||
@@ -5231,9 +5438,9 @@ Mon Oct 29 18:21:45 UTC 2012 - dmueller@suse.com
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Oct 25 08:14:36 UTC 2012 - Rene.vanPaassen@gmail.com
|
Thu Oct 25 08:14:36 UTC 2012 - Rene.vanPaassen@gmail.com
|
||||||
|
|
||||||
- exclude test_math for SLE 11; math library fails on negative
|
- exclude test_math for SLE 11; math library fails on negative
|
||||||
gamma function values close to integers and 0, probably
|
gamma function values close to integers and 0, probably
|
||||||
due to imprecision in -lm on SLE_11_SP2.
|
due to imprecision in -lm on SLE_11_SP2.
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Oct 16 12:15:34 UTC 2012 - coolo@suse.com
|
Tue Oct 16 12:15:34 UTC 2012 - coolo@suse.com
|
||||||
@@ -5257,7 +5464,7 @@ Mon Oct 1 08:53:03 UTC 2012 - idonmez@suse.com
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Thu Sep 27 12:35:01 UTC 2012 - idonmez@suse.com
|
Thu Sep 27 12:35:01 UTC 2012 - idonmez@suse.com
|
||||||
|
|
||||||
- Correct dependency for python3-testsuite,
|
- Correct dependency for python3-testsuite,
|
||||||
python3-tkinter -> python3-tk
|
python3-tkinter -> python3-tk
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
@@ -5290,7 +5497,7 @@ Fri Aug 3 12:09:34 UTC 2012 - jmatejek@suse.com
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Jul 27 09:02:41 UTC 2012 - dvaleev@suse.com
|
Fri Jul 27 09:02:41 UTC 2012 - dvaleev@suse.com
|
||||||
|
|
||||||
- skip test_io on ppc
|
- skip test_io on ppc
|
||||||
- drop test_io ppc patch
|
- drop test_io ppc patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
@@ -5339,8 +5546,8 @@ Wed Jan 18 15:49:47 UTC 2012 - jmatejek@suse.com
|
|||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Sun Dec 25 13:25:01 UTC 2011 - idonmez@suse.com
|
Sun Dec 25 13:25:01 UTC 2011 - idonmez@suse.com
|
||||||
|
|
||||||
- Use system ffi, included one is broken see
|
- Use system ffi, included one is broken see
|
||||||
http://bugs.python.org/issue11729 and
|
http://bugs.python.org/issue11729 and
|
||||||
http://bugs.python.org/issue12081
|
http://bugs.python.org/issue12081
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package python311
|
# spec file for package python311
|
||||||
#
|
#
|
||||||
# Copyright (c) 2024 SUSE LLC
|
# Copyright (c) 2025 SUSE LLC
|
||||||
#
|
#
|
||||||
# All modifications and additions to the file contributed by third parties
|
# All modifications and additions to the file contributed by third parties
|
||||||
# remain the property of their copyright owners, unless otherwise agreed
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
@@ -36,12 +36,20 @@
|
|||||||
%bcond_without general
|
%bcond_without general
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if 0%{?do_profiling}
|
%if 0%{?do_profiling} && !0%{?want_reproducible_builds}
|
||||||
%bcond_without profileopt
|
%bcond_without profileopt
|
||||||
%else
|
%else
|
||||||
%bcond_with profileopt
|
%bcond_with profileopt
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
# Only for Tumbleweed
|
||||||
|
# https://en.opensuse.org/openSUSE:Python:Externally_managed
|
||||||
|
%if 0%{?suse_version} > 1600
|
||||||
|
%bcond_without externally_managed
|
||||||
|
%else
|
||||||
|
%bcond_with externally_managed
|
||||||
|
%endif
|
||||||
|
|
||||||
%define python_pkg_name python311
|
%define python_pkg_name python311
|
||||||
%if "%{python_pkg_name}" == "%{primary_python}"
|
%if "%{python_pkg_name}" == "%{primary_python}"
|
||||||
%define primary_interpreter 1
|
%define primary_interpreter 1
|
||||||
@@ -98,15 +106,14 @@
|
|||||||
# pyexpat.cpython-35m-armv7-linux-gnueabihf
|
# pyexpat.cpython-35m-armv7-linux-gnueabihf
|
||||||
# _md5.cpython-38m-x86_64-linux-gnu.so
|
# _md5.cpython-38m-x86_64-linux-gnu.so
|
||||||
%define dynlib() %{sitedir}/lib-dynload/%{1}.cpython-%{abi_tag}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}.so
|
%define dynlib() %{sitedir}/lib-dynload/%{1}.cpython-%{abi_tag}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}.so
|
||||||
%bcond_without profileopt
|
|
||||||
Name: %{python_pkg_name}%{psuffix}
|
Name: %{python_pkg_name}%{psuffix}
|
||||||
Version: 3.11.10
|
Version: 3.11.13
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: Python 3 Interpreter
|
Summary: Python 3 Interpreter
|
||||||
License: Python-2.0
|
License: Python-2.0
|
||||||
URL: https://www.python.org/
|
URL: https://www.python.org/
|
||||||
Source0: https://www.python.org/ftp/python/%{folderversion}/%{tarname}.tar.xz
|
Source0: https://www.python.org/ftp/python/%{folderversion}/%{tarname}.tar.xz
|
||||||
Source1: https://www.python.org/ftp/python/%{folderversion}/%{tarname}.tar.xz.asc
|
Source1: https://www.python.org/ftp/python/%{folderversion}/%{tarname}.tar.xz.sigstore
|
||||||
Source2: baselibs.conf
|
Source2: baselibs.conf
|
||||||
Source3: README.SUSE
|
Source3: README.SUSE
|
||||||
Source4: externally_managed.in
|
Source4: externally_managed.in
|
||||||
@@ -145,8 +152,6 @@ Patch03: distutils-reproducible-compile.patch
|
|||||||
Patch04: python-3.3.0b1-localpath.patch
|
Patch04: python-3.3.0b1-localpath.patch
|
||||||
# replace DATE, TIME and COMPILER by fixed definitions to aid reproducible builds
|
# replace DATE, TIME and COMPILER by fixed definitions to aid reproducible builds
|
||||||
Patch05: python-3.3.0b1-fix_date_time_compiler.patch
|
Patch05: python-3.3.0b1-fix_date_time_compiler.patch
|
||||||
# POSIX_FADV_WILLNEED throws EINVAL. Use a different constant in test
|
|
||||||
Patch06: python-3.3.0b1-test-posix_fadvise.patch
|
|
||||||
# Raise timeout value for test_subprocess
|
# Raise timeout value for test_subprocess
|
||||||
Patch07: subprocess-raise-timeout.patch
|
Patch07: subprocess-raise-timeout.patch
|
||||||
# PATCH-FEATURE-UPSTREAM bpo-31046_ensurepip_honours_prefix.patch bpo#31046 mcepl@suse.com
|
# PATCH-FEATURE-UPSTREAM bpo-31046_ensurepip_honours_prefix.patch bpo#31046 mcepl@suse.com
|
||||||
@@ -179,8 +184,17 @@ Patch19: bso1227999-reproducible-builds.patch
|
|||||||
# PATCH-FIX-UPSTREAM gh120226-fix-sendfile-test-kernel-610.patch gh#python/cpython#120226 mcepl@suse.com
|
# PATCH-FIX-UPSTREAM gh120226-fix-sendfile-test-kernel-610.patch gh#python/cpython#120226 mcepl@suse.com
|
||||||
# Fix test_sendfile_close_peer_in_the_middle_of_receiving on Linux >= 6.10 (GH-120227)
|
# Fix test_sendfile_close_peer_in_the_middle_of_receiving on Linux >= 6.10 (GH-120227)
|
||||||
Patch22: gh120226-fix-sendfile-test-kernel-610.patch
|
Patch22: gh120226-fix-sendfile-test-kernel-610.patch
|
||||||
|
# PATCH-FIX-UPSTREAM Add platform triplets for 64-bit LoongArch gh#python/cpython#30939 glaubitz@suse.com
|
||||||
|
Patch24: add-loongarch64-support.patch
|
||||||
|
# PATCH-FIX-UPSTREAM CVE-2025-6069-quad-complex-HTMLParser.patch bsc#1244705 mcepl@suse.com
|
||||||
|
# avoid quadratic complexity when processing malformed inputs with HTMLParser
|
||||||
|
Patch25: CVE-2025-6069-quad-complex-HTMLParser.patch
|
||||||
|
# PATCH-FIX-UPSTREAM CVE-2025-8194-tarfile-no-neg-offsets.patch bsc#1247249 mcepl@suse.com
|
||||||
|
# tarfile now validates archives to ensure member offsets are non-negative
|
||||||
|
Patch26: CVE-2025-8194-tarfile-no-neg-offsets.patch
|
||||||
BuildRequires: autoconf-archive
|
BuildRequires: autoconf-archive
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
|
BuildRequires: crypto-policies-scripts
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
BuildRequires: gmp-devel
|
BuildRequires: gmp-devel
|
||||||
BuildRequires: lzma-devel
|
BuildRequires: lzma-devel
|
||||||
@@ -421,26 +435,11 @@ other applications.
|
|||||||
%prep
|
%prep
|
||||||
%setup -q -n %{tarname}
|
%setup -q -n %{tarname}
|
||||||
|
|
||||||
%patch -p1 -P 02
|
%autopatch -p1 -M 08
|
||||||
%patch -p1 -P 03
|
|
||||||
%patch -p1 -P 04
|
|
||||||
%patch -p1 -P 05
|
|
||||||
%patch -p1 -P 06
|
|
||||||
%patch -p1 -P 07
|
|
||||||
%patch -p1 -P 08
|
|
||||||
|
|
||||||
%if 0%{?suse_version} <= 1500
|
%if 0%{?suse_version} <= 1500
|
||||||
%patch -P 09 -p1
|
%patch -P 09 -p1
|
||||||
%endif
|
%endif
|
||||||
|
%autopatch -p1 -m 10
|
||||||
%patch -p1 -P 10
|
|
||||||
%patch -p1 -P 11
|
|
||||||
%patch -p1 -P 13
|
|
||||||
%patch -p1 -P 15
|
|
||||||
%patch -p1 -P 16
|
|
||||||
%patch -p1 -P 17
|
|
||||||
%patch -p1 -P 19
|
|
||||||
%patch -p1 -P 22
|
|
||||||
|
|
||||||
# drop Autoconf version requirement
|
# drop Autoconf version requirement
|
||||||
sed -i 's/^AC_PREREQ/dnl AC_PREREQ/' configure.ac
|
sed -i 's/^AC_PREREQ/dnl AC_PREREQ/' configure.ac
|
||||||
@@ -485,7 +484,7 @@ TODAY_DATE=`date -r %{SOURCE0} "+%%B %%d, %%Y"`
|
|||||||
|
|
||||||
cd Doc
|
cd Doc
|
||||||
sed -i "s/^today = .*/today = '$TODAY_DATE'/" conf.py
|
sed -i "s/^today = .*/today = '$TODAY_DATE'/" conf.py
|
||||||
%make_build -j1 html
|
%make_build -j1 JOBS=1 html
|
||||||
|
|
||||||
# Build also devhelp files
|
# Build also devhelp files
|
||||||
sphinx-build -a -b devhelp . build/devhelp
|
sphinx-build -a -b devhelp . build/devhelp
|
||||||
@@ -723,7 +722,7 @@ rm %{buildroot}%{_libdir}/libpython3.so
|
|||||||
rm %{buildroot}%{_libdir}/pkgconfig/{python3,python3-embed}.pc
|
rm %{buildroot}%{_libdir}/pkgconfig/{python3,python3-embed}.pc
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%if %{suse_version} > 1550
|
%if %{with externally_managed}
|
||||||
# PEP-0668 mark this as a distro maintained python
|
# PEP-0668 mark this as a distro maintained python
|
||||||
sed -e 's,__PYTHONPREFIX__,%{python_pkg_name},' -e 's,__PYTHON__,python%{python_version},' < %{SOURCE4} > %{buildroot}%{sitedir}/EXTERNALLY-MANAGED
|
sed -e 's,__PYTHONPREFIX__,%{python_pkg_name},' -e 's,__PYTHON__,python%{python_version},' < %{SOURCE4} > %{buildroot}%{sitedir}/EXTERNALLY-MANAGED
|
||||||
%endif
|
%endif
|
||||||
@@ -764,6 +763,9 @@ install -m 755 -D Tools/gdb/libpython.py %{buildroot}%{_datadir}/gdb/auto-load/%
|
|||||||
# install devel files to /config
|
# install devel files to /config
|
||||||
#cp Makefile Makefile.pre.in Makefile.pre $RPM_BUILD_ROOT%%{sitedir}/config-%%{python_abi}/
|
#cp Makefile Makefile.pre.in Makefile.pre $RPM_BUILD_ROOT%%{sitedir}/config-%%{python_abi}/
|
||||||
|
|
||||||
|
# Remove -IVendor/ from python-config boo#1231795
|
||||||
|
sed -i 's/-IVendor\///' %{buildroot}%{_bindir}/python%{python_abi}-config
|
||||||
|
|
||||||
# RPM macros
|
# RPM macros
|
||||||
%if %{primary_interpreter}
|
%if %{primary_interpreter}
|
||||||
mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d/
|
mkdir -p %{buildroot}%{_rpmconfigdir}/macros.d/
|
||||||
@@ -792,6 +794,11 @@ LD_LIBRARY_PATH=. ./python -O -c "from py_compile import compile; compile('$FAIL
|
|||||||
echo %{sitedir}/_import_failed > %{buildroot}/%{sitedir}/site-packages/zzzz-import-failed-hooks.pth
|
echo %{sitedir}/_import_failed > %{buildroot}/%{sitedir}/site-packages/zzzz-import-failed-hooks.pth
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
# For the purposes of reproducibility, it is necessary to eliminate any *.pyc files inside documentation dirs
|
||||||
|
if [ -d %{buildroot}%{_defaultdocdir} ] ; then
|
||||||
|
find %{buildroot}%{_defaultdocdir} -type f -name \*.pyc -ls -exec rm -vf '{}' \;
|
||||||
|
fi
|
||||||
|
|
||||||
%if %{with general}
|
%if %{with general}
|
||||||
%files -n %{python_pkg_name}-tk
|
%files -n %{python_pkg_name}-tk
|
||||||
%{sitedir}/tkinter
|
%{sitedir}/tkinter
|
||||||
@@ -911,7 +918,7 @@ echo %{sitedir}/_import_failed > %{buildroot}/%{sitedir}/site-packages/zzzz-impo
|
|||||||
%{_mandir}/man1/python3.1%{?ext_man}
|
%{_mandir}/man1/python3.1%{?ext_man}
|
||||||
%endif
|
%endif
|
||||||
%{_mandir}/man1/python%{python_version}.1%{?ext_man}
|
%{_mandir}/man1/python%{python_version}.1%{?ext_man}
|
||||||
%if 0%{?suse_version} > 1550
|
%if %{with externally_managed}
|
||||||
# PEP-0668
|
# PEP-0668
|
||||||
%{sitedir}/EXTERNALLY-MANAGED
|
%{sitedir}/EXTERNALLY-MANAGED
|
||||||
%endif
|
%endif
|
||||||
|
Reference in New Issue
Block a user