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>
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# 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
|
||||
# remain the property of their copyright owners, unless otherwise agreed
|
||||
@@ -167,7 +167,7 @@
|
||||
# _md5.cpython-38m-x86_64-linux-gnu.so
|
||||
%define dynlib() %{sitedir}/lib-dynload/%{1}.cpython-%{abi_tag}-%{archname}-%{_os}%{?_gnu}%{?armsuffix}.so
|
||||
Name: %{python_pkg_name}%{psuffix}
|
||||
Version: 3.13.5
|
||||
Version: 3.13.6
|
||||
%define tarversion %{version}
|
||||
%define tarname Python-%{tarversion}
|
||||
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
|
||||
# avoid quadratic complexity when processing malformed inputs with HTMLParser
|
||||
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: automake
|
||||
BuildRequires: fdupes
|
||||
|
||||
Reference in New Issue
Block a user