forked from pool/python313
- Update to 3.13.6:
Python 3.13.6 final
Release date: 2025-08-06
- Tools/Demos
- gh-135968: Stubs for strip are now provided as part of an
iOS install.
- Tests
- gh-135966: The iOS testbed now handles the app_packages
folder as a site directory.
- gh-135494: Fix regrtest to support excluding tests from
--pgo tests. Patch by Victor Stinner.
- gh-135489: Show verbose output for failing tests during PGO
profiling step with –enable-optimizations.
- Security
- 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. </script/foo=">"/>.
- Multiple slashes and whitespaces between the last
attribute and closing > are now ignored in both start
and end tags. E.g. <a foo=bar/ //>.
- Multiple = between attribute name and value are no
longer collapsed. E.g. <a foo==bar> produces attribute
OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:Factory/python313?expand=0&rev=115
This commit is contained in:
@@ -1,212 +0,0 @@
|
|||||||
From fd29bcd380150035ef825b762d8cd085bdab6e53 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.13.5/Lib/tarfile.py
|
|
||||||
===================================================================
|
|
||||||
--- Python-3.13.5.orig/Lib/tarfile.py 2025-08-01 22:13:44.185826095 +0200
|
|
||||||
+++ Python-3.13.5/Lib/tarfile.py 2025-08-01 22:13:45.524140183 +0200
|
|
||||||
@@ -1636,6 +1636,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.13.5/Lib/test/test_tarfile.py
|
|
||||||
===================================================================
|
|
||||||
--- Python-3.13.5.orig/Lib/test/test_tarfile.py 2025-06-11 17:36:57.000000000 +0200
|
|
||||||
+++ Python-3.13.5/Lib/test/test_tarfile.py 2025-08-01 22:13:45.524778259 +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"
|
|
||||||
@@ -4578,6 +4579,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.13.5/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.13.5/Misc/NEWS.d/next/Library/2025-07-23-00-35-29.gh-issue-130577.c7EITy.rst 2025-08-01 22:13:45.525174751 +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`.)
|
|
||||||
BIN
Python-3.13.5.tar.xz
(Stored with Git LFS)
BIN
Python-3.13.5.tar.xz
(Stored with Git LFS)
Binary file not shown.
File diff suppressed because one or more lines are too long
BIN
Python-3.13.6.tar.xz
(Stored with Git LFS)
Normal file
BIN
Python-3.13.6.tar.xz
(Stored with Git LFS)
Normal file
Binary file not shown.
1
Python-3.13.6.tar.xz.sigstore
Normal file
1
Python-3.13.6.tar.xz.sigstore
Normal file
File diff suppressed because one or more lines are too long
@@ -1,3 +1,209 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Aug 7 10:08:11 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
|
- Update to 3.13.6:
|
||||||
|
- Security
|
||||||
|
- 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. </script/foo=">"/>.
|
||||||
|
- Multiple slashes and whitespaces between the last
|
||||||
|
attribute and closing > are now ignored in both start
|
||||||
|
and end tags. E.g. <a foo=bar/ //>.
|
||||||
|
- Multiple = between attribute name and value are no
|
||||||
|
longer collapsed. E.g. <a foo==bar> produces attribute
|
||||||
|
“foo” with value “=bar”.
|
||||||
|
- 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.
|
||||||
|
- Core and Builtins
|
||||||
|
- gh-58124: Fix name of the Python encoding in Unicode errors
|
||||||
|
of the code page codec: use “cp65000” and “cp65001” instead
|
||||||
|
of “CP_UTF7” and “CP_UTF8” which are not valid Python code
|
||||||
|
names. Patch by Victor Stinner.
|
||||||
|
- gh-137314: Fixed a regression where raw f-strings
|
||||||
|
incorrectly interpreted escape sequences in format
|
||||||
|
specifications. Raw f-strings now properly preserve literal
|
||||||
|
backslashes in format specs, matching the behavior from
|
||||||
|
Python 3.11. For example, rf"{obj:\xFF}" now correctly
|
||||||
|
produces '\\xFF' instead of 'ÿ'. Patch by Pablo Galindo.
|
||||||
|
- gh-136541: Fix some issues with the perf trampolines
|
||||||
|
on x86-64 and aarch64. The trampolines were not being
|
||||||
|
generated correctly for some cases, which could lead to
|
||||||
|
the perf integration not working correctly. Patch by Pablo
|
||||||
|
Galindo.
|
||||||
|
- gh-109700: Fix memory error handling in
|
||||||
|
PyDict_SetDefault().
|
||||||
|
- gh-78465: Fix error message for cls.__new__(cls, ...) where
|
||||||
|
cls is not instantiable builtin or extension type (with
|
||||||
|
tp_new set to NULL).
|
||||||
|
- gh-135871: Non-blocking mutex lock attempts now return
|
||||||
|
immediately when the lock is busy instead of briefly
|
||||||
|
spinning in the free threading build.
|
||||||
|
- gh-135607: Fix potential weakref races in an object’s
|
||||||
|
destructor on the free threaded build.
|
||||||
|
- gh-135496: Fix typo in the f-string conversion type error
|
||||||
|
(“exclamanation” -> “exclamation”).
|
||||||
|
- gh-130077: Properly raise custom syntax errors when
|
||||||
|
incorrect syntax containing names that are prefixes of soft
|
||||||
|
keywords is encountered. Patch by Pablo Galindo.
|
||||||
|
- gh-135148: Fixed a bug where f-string debug expressions
|
||||||
|
(using =) would incorrectly strip out parts of strings
|
||||||
|
containing escaped quotes and # characters. Patch by Pablo
|
||||||
|
Galindo.
|
||||||
|
- gh-133136: Limit excess memory usage in the free threading
|
||||||
|
build when a large dictionary or list is resized and
|
||||||
|
accessed by multiple threads.
|
||||||
|
- gh-132617: Fix dict.update() modification check that could
|
||||||
|
incorrectly raise a “dict mutated during update” error when
|
||||||
|
a different dictionary was modified that happens to share
|
||||||
|
the same underlying keys object.
|
||||||
|
- gh-91153: Fix a crash when a bytearray is concurrently
|
||||||
|
mutated during item assignment.
|
||||||
|
- gh-127971: Fix off-by-one read beyond the end of a string
|
||||||
|
in string search.
|
||||||
|
- gh-125723: Fix crash with gi_frame.f_locals when generator
|
||||||
|
frames outlive their generator. Patch by Mikhail Efimov.
|
||||||
|
- Library
|
||||||
|
- gh-132710: If possible, ensure that uuid.getnode()
|
||||||
|
returns the same result even across different processes.
|
||||||
|
Previously, the result was constant only within the same
|
||||||
|
process. Patch by Bénédikt Tran.
|
||||||
|
- gh-137273: Fix debug assertion failure in
|
||||||
|
locale.setlocale() on Windows.
|
||||||
|
- gh-137257: Bump the version of pip bundled in ensurepip to
|
||||||
|
version 25.2
|
||||||
|
- gh-81325: tarfile.TarFile now accepts a path-like when
|
||||||
|
working on a tar archive. (Contributed by Alexander Enrique
|
||||||
|
Urieles Nieto in gh-81325.)
|
||||||
|
- gh-130522: Fix unraisable TypeError raised during
|
||||||
|
interpreter shutdown in the threading module.
|
||||||
|
- gh-130577: tarfile now validates archives to ensure member
|
||||||
|
offsets are non-negative. (Contributed by Alexander Enrique
|
||||||
|
Urieles Nieto in gh-130577; CVE-2025-8194, bsc#1247249).
|
||||||
|
- gh-136549: Fix signature of threading.excepthook().
|
||||||
|
- gh-136523: Fix wave.Wave_write emitting an unraisable when
|
||||||
|
open raises.
|
||||||
|
- gh-52876: Add missing keepends (default True)
|
||||||
|
parameter to codecs.StreamReaderWriter.readline() and
|
||||||
|
codecs.StreamReaderWriter.readlines().
|
||||||
|
- gh-85702: If zoneinfo._common.load_tzdata is given a
|
||||||
|
package without a resource a zoneinfo.ZoneInfoNotFoundError
|
||||||
|
is raised rather than a PermissionError. Patch by Victor
|
||||||
|
Stinner.
|
||||||
|
- gh-134759: Fix UnboundLocalError in
|
||||||
|
email.message.Message.get_payload() when the payload to
|
||||||
|
decode is a bytes object. Patch by Kliment Lamonov.
|
||||||
|
- gh-136028: Fix parsing month names containing “İ” (U+0130,
|
||||||
|
LATIN CAPITAL LETTER I WITH DOT ABOVE) in time.strptime().
|
||||||
|
This affects locales az_AZ, ber_DZ, ber_MA and crh_UA.
|
||||||
|
- gh-135995: In the palmos encoding, make byte 0x9b decode to
|
||||||
|
› (U+203A - SINGLE RIGHT-POINTING ANGLE QUOTATION MARK).
|
||||||
|
- gh-53203: Fix time.strptime() for %c and %x formats on
|
||||||
|
locales byn_ER, wal_ET and lzh_TW, and for %X format on
|
||||||
|
locales ar_SA, bg_BG and lzh_TW.
|
||||||
|
- gh-91555: An earlier change, which was introduced in
|
||||||
|
3.13.4, has been reverted. It disabled logging for a logger
|
||||||
|
during handling of log messages for that logger. Since the
|
||||||
|
reversion, the behaviour should be as it was before 3.13.4.
|
||||||
|
- gh-135878: Fixes a crash of types.SimpleNamespace on free
|
||||||
|
threading builds, when several threads were calling its
|
||||||
|
__repr__() method at the same time.
|
||||||
|
- gh-135836: Fix IndexError in
|
||||||
|
asyncio.loop.create_connection() that could occur when
|
||||||
|
non-OSError exception is raised during connection and
|
||||||
|
socket’s close() raises OSError.
|
||||||
|
- gh-135836: Fix IndexError in
|
||||||
|
asyncio.loop.create_connection() that could occur when the
|
||||||
|
Happy Eyeballs algorithm resulted in an empty exceptions
|
||||||
|
list during connection attempts.
|
||||||
|
- gh-135855: Raise TypeError instead of SystemError when
|
||||||
|
_interpreters.set___main___attrs() is passed a non-dict
|
||||||
|
object. Patch by Brian Schubert.
|
||||||
|
- gh-135815: netrc: skip security checks if os.getuid() is
|
||||||
|
missing. Patch by Bénédikt Tran.
|
||||||
|
- gh-135640: Address bug where it was possible to call
|
||||||
|
xml.etree.ElementTree.ElementTree.write() on an ElementTree
|
||||||
|
object with an invalid root element. This behavior blanked
|
||||||
|
the file passed to write if it already existed.
|
||||||
|
- gh-135444: Fix asyncio.DatagramTransport.sendto() to
|
||||||
|
account for datagram header size when data cannot be sent.
|
||||||
|
- gh-135497: Fix os.getlogin() failing for longer usernames
|
||||||
|
on BSD-based platforms.
|
||||||
|
- gh-135487: Fix reprlib.Repr.repr_int() when given integers
|
||||||
|
with more than sys.get_int_max_str_digits() digits. Patch
|
||||||
|
by Bénédikt Tran.
|
||||||
|
- gh-135335: multiprocessing: Flush stdout and stderr after
|
||||||
|
preloading modules in the forkserver.
|
||||||
|
- gh-135244: uuid: when the MAC address cannot be
|
||||||
|
determined, the 48-bit node ID is now generated with a
|
||||||
|
cryptographically-secure pseudo-random number generator
|
||||||
|
(CSPRNG) as per RFC 9562, §6.10.3. This affects uuid1().
|
||||||
|
- gh-135069: Fix the “Invalid error handling” exception in
|
||||||
|
encodings.idna.IncrementalDecoder to correctly replace the
|
||||||
|
‘errors’ parameter.
|
||||||
|
- gh-134698: Fix a crash when calling methods of
|
||||||
|
ssl.SSLContext or ssl.SSLSocket across multiple threads.
|
||||||
|
- gh-132124: On POSIX-compliant systems,
|
||||||
|
multiprocessing.util.get_temp_dir() now ignores TMPDIR
|
||||||
|
(and similar environment variables) if the path length of
|
||||||
|
AF_UNIX socket files exceeds the platform-specific maximum
|
||||||
|
length when using the forkserver start method. Patch by
|
||||||
|
Bénédikt Tran.
|
||||||
|
- gh-133439: Fix dot commands with trailing spaces are
|
||||||
|
mistaken for multi-line SQL statements in the sqlite3
|
||||||
|
command-line interface.
|
||||||
|
- gh-132969: Prevent the ProcessPoolExecutor executor thread,
|
||||||
|
which remains running when shutdown(wait=False), from
|
||||||
|
attempting to adjust the pool’s worker processes after
|
||||||
|
the object state has already been reset during shutdown.
|
||||||
|
A combination of conditions, including a worker process
|
||||||
|
having terminated abormally, resulted in an exception and
|
||||||
|
a potential hang when the still-running executor thread
|
||||||
|
attempted to replace dead workers within the pool.
|
||||||
|
- gh-130664: Support the '_' digit separator in formatting
|
||||||
|
of the integral part of Decimal’s. Patch by Sergey B
|
||||||
|
Kirpichev.
|
||||||
|
- gh-85702: If zoneinfo._common.load_tzdata is given a
|
||||||
|
package without a resource a ZoneInfoNotFoundError is
|
||||||
|
raised rather than a IsADirectoryError.
|
||||||
|
- gh-130664: Handle corner-case for Fraction’s formatting:
|
||||||
|
treat zero-padding (preceding the width field by a zero
|
||||||
|
('0') character) as an equivalent to a fill character of
|
||||||
|
'0' with an alignment type of '=', just as in case of
|
||||||
|
float’s.
|
||||||
|
- Tools/Demos
|
||||||
|
- gh-135968: Stubs for strip are now provided as part of an
|
||||||
|
iOS install.
|
||||||
|
- Tests
|
||||||
|
- gh-135966: The iOS testbed now handles the app_packages
|
||||||
|
folder as a site directory.
|
||||||
|
- gh-135494: Fix regrtest to support excluding tests from
|
||||||
|
--pgo tests. Patch by Victor Stinner.
|
||||||
|
- gh-135489: Show verbose output for failing tests during PGO
|
||||||
|
profiling step with –enable-optimizations.
|
||||||
|
- Documentation
|
||||||
|
- gh-135171: Document that the iterator for the leftmost for
|
||||||
|
clause in the generator expression is created immediately.
|
||||||
|
- Build
|
||||||
|
- gh-135497: Fix the detection of MAXLOGNAME in the
|
||||||
|
configure.ac script.
|
||||||
|
- Remove CVE-2025-8194-tarfile-no-neg-offsets.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Aug 1 20:09:24 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
Fri Aug 1 20:09:24 UTC 2025 - Matej Cepl <mcepl@cepl.eu>
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# spec file for package python313
|
# spec file for package python313
|
||||||
#
|
#
|
||||||
# Copyright (c) 2025 SUSE LLC
|
# Copyright (c) 2025 SUSE LLC and contributors
|
||||||
#
|
#
|
||||||
# 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
|
||||||
@@ -167,7 +167,7 @@
|
|||||||
# _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
|
||||||
Name: %{python_pkg_name}%{psuffix}
|
Name: %{python_pkg_name}%{psuffix}
|
||||||
Version: 3.13.5
|
Version: 3.13.6
|
||||||
%define tarversion %{version}
|
%define tarversion %{version}
|
||||||
%define tarname Python-%{tarversion}
|
%define tarname Python-%{tarversion}
|
||||||
Release: 0
|
Release: 0
|
||||||
@@ -234,9 +234,6 @@ Patch43: bsc1243155-sphinx-non-determinism.patch
|
|||||||
# PATCH-FIX-UPSTREAM CVE-2025-6069-quad-complex-HTMLParser.patch bsc#1244705 mcepl@suse.com
|
# PATCH-FIX-UPSTREAM CVE-2025-6069-quad-complex-HTMLParser.patch bsc#1244705 mcepl@suse.com
|
||||||
# avoid quadratic complexity when processing malformed inputs with HTMLParser
|
# avoid quadratic complexity when processing malformed inputs with HTMLParser
|
||||||
Patch44: CVE-2025-6069-quad-complex-HTMLParser.patch
|
Patch44: 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
|
|
||||||
Patch45: CVE-2025-8194-tarfile-no-neg-offsets.patch
|
|
||||||
BuildRequires: autoconf-archive
|
BuildRequires: autoconf-archive
|
||||||
BuildRequires: automake
|
BuildRequires: automake
|
||||||
BuildRequires: fdupes
|
BuildRequires: fdupes
|
||||||
|
|||||||
Reference in New Issue
Block a user