Commit graph

112490 commits

Author SHA1 Message Date
Sebastian Pipping
1173f8068b
[3.10] gh-90949: add Expat API to prevent XML deadly allocations (CVE-2025-59375) (GH-139234) (#139532)
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2025-11-25 15:25:12 +00:00
Miss Islington (bot)
9524203dee
[3.10] gh-90953: Don't use deprecated AST nodes in clinic.py (GH-104322) (GH-140855)
(cherry picked from commit fe694a6db6)

Co-authored-by: Alex Waygood <Alex.Waygood@Gmail.com>
2025-10-31 17:56:30 +01:00
Serhiy Storchaka
3a623c6c55
[3.10] gh-137836: Support more RAWTEXT and PLAINTEXT elements in HTMLParser (GH-137837) (GH-140842) (GH-140853)
(cherry picked from commit a17c57eee5)
(cherry picked from commit 0329bd11c7)
2025-10-31 17:55:58 +01:00
Łukasz Langa
892747b4cf
[3.10] gh-136065: Fix quadratic complexity in os.path.expandvars() (GH-134952) (GH-140851)
(cherry picked from commit f029e8db62)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2025-10-31 17:51:32 +01:00
Miss Islington (bot)
3eea546ed1
[3.10] gh-120384: gh-120298: Fix array-out-of-bounds & use after free list (GH-121345) (GH-140833)
(cherry picked from commit 8334a1b55c)
(cherry picked from commit 0cd888b8d3)

Co-authored-by: Gregory P. Smith <68491+gpshead@users.noreply.github.com>
Co-authored-by: Nikita Sobolev <mail@sobolevn.me>
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
2025-10-31 15:44:28 +01:00
Adam Turner
9104fc6cdf
[3.10] gh-139436: Remove `dist-pdf` from the docs archives rebuild target (GH-139437) (GH-140412)
(cherry picked from commit 0e2cdd313b)

Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
2025-10-31 14:14:36 +01:00
Pablo Galindo
014261980b Post 3.10.19 2025-10-09 18:07:32 +02:00
Pablo Galindo
f08d3c437b Python 3.10.19 2025-10-09 17:25:03 +02:00
Miss Islington (bot)
c1e1091480
[3.10] gh-139310: skip test_aead_aes_gcm for Linux kernel between 6.16.0 and 6.17.x (GH-139552) (GH-139761)
Currently, Fedora 42 uses a custom Linux Kernel 6.16.9 that backported an upstream change
from 6.17-rc7 [1,3] but not its subsequent fix [2]. Until the issue is resolved upstream,
we skip the failing test `test_socket.test_aead_aes_gcm` for kernel versions between 6.16
and 6.17.x.

[1] 1b34cbbf4f
[2] d0ca0df179.
[3] 45bcf60fe4
(cherry picked from commit 41712c4e09)

Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2025-10-09 11:08:32 +02:00
Miss Islington (bot)
bca11ae7d5
[3.10] gh-139700: Check consistency of the zip64 end of central directory record (GH-139702) (GH-139708) (#139714)
Support records with "zip64 extensible data" if there are no bytes
prepended to the ZIP file.

(cherry picked from commit 333d4a6f49)
(cherry picked from commit 162997bb70)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2025-10-07 21:18:04 +02:00
Miss Islington (bot)
7317e0bbb7
[3.10] gh-135661: Fix CDATA section parsing in HTMLParser (GH-135665) (GH-137774) (GH-139660)
"] ]>" and "]] >" no longer end the CDATA section.

Make CDATA section parsing  context depending.
Add private method HTMLParser._set_support_cdata() to change the context.
If called with True, "<[CDATA[" starts a CDATA section which ends with "]]>".
If called with False, "<[CDATA[" starts a bogus comments which ends with ">".
(cherry picked from commit 0cbbfc4621)
(cherry picked from commit dcf24768c9)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2025-10-07 14:12:23 +02:00
Sebastian Pipping
8ea678d6d1
[3.10] gh-139400: Make sure that parent parsers outlive their subparsers in pyexpat (GH-139403) (#139613)
* gh-139400: Make sure that parent parsers outlive their subparsers in `pyexpat` (#139403)

* Modules/pyexpat.c: Disallow collection of in-use parent parsers.

Within libexpat, a parser created via `XML_ExternalEntityParserCreate`
is relying on its parent parser throughout its entire lifetime.
Prior to this fix, is was possible for the parent parser to be
garbage-collected too early.

(cherry picked from commit 6edb2ddb5f)

* Move news item to from section "Core and Builtins" to section "Security"
2025-10-07 00:34:14 +01:00
Adam Turner
f610f9eab9
[3.10] Remove link to the PDF downloads (GH-139142) (#139431) 2025-09-29 21:44:38 +01:00
Miss Islington (bot)
91af026310
[3.10] gh-135374: Adjust test for setuptools' replacement of distutils (GH-138796) (GH-139303)
ensurepip installs a bundled copy of distutils, which overrides
the stdlib module. This affects several tests. This commit:

- skips distutils in test___all__, as we're unlikely to break
  `__all__` in a security-fix-only branch (and if we do it's not
  much of a a big deal)
- skips importability tests of distutils submodules if the
  setuptools hack is detected
(cherry picked from commit 987af36a71)

Co-authored-by: Petr Viktorin <encukou@gmail.com>
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
Co-authored-by: Emma Smith <emma@emmatyping.dev>
2025-09-29 16:27:23 +02:00
Stan Ulbrych
7252d2b73b
[3.10] gh-139312: Update bundled libexpat to 2.7.3 (GH-139319) (#139379) 2025-09-28 14:47:31 +01:00
Stan Ulbrych
a99632fa2f
[3.10] gh-138998: Upgrade vendored expat to 2.7.2 (#138999) (#139053)
gh-138998: Upgrade vendored expat to 2.7.2 (#138999)

(cherry picked from commit 64c876dd68)
2025-09-26 21:37:42 +01:00
Hugo van Kemenade
5c19c5bac6
[3.10] gh-138744: GitHub Actions: pin to windows-2022 (GH-138743) (GH-138757)
(cherry picked from commit 6e78a539bf)
2025-09-13 22:37:07 +02:00
Serhiy Storchaka
9b51801581
[3.10] gh-118350: Fix support of elements "textarea" and "title" in HTMLParser (GH-135310) (GH-137783)
(cherry picked from commit 4d02f31cdd)

Co-authored-by: Timon Viola <44016238+timonviola@users.noreply.github.com>
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
2025-09-13 22:36:51 +02:00
Victor Stinner
57f5981d62
[3.10] gh-130577: tarfile now validates archives to ensure member offsets are non-negative (GH-137027) (#137644)
gh-130577: tarfile now validates archives to ensure member offsets are non-negative (GH-137027)


(cherry picked from commit 7040aa54f1)

Co-authored-by: Alexander Urieles <aeurielesn@users.noreply.github.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
2025-09-02 19:20:27 +01:00
Miss Islington (bot)
1df5d00145
[3.10] gh-135661: Fix parsing attributes with whitespaces around the "=" separator in HTMLParser (GH-136908) (GH-136921)
This fixes a regression introduced in GH-135930.
(cherry picked from commit dee6501894)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2025-07-22 11:57:56 +02:00
Miss Islington (bot)
151e0f00f7
[3.10] gh-135661: Fix parsing start and end tags in HTMLParser according to the HTML5 standard (GH-135930) (GH-136268) (#136292)
* 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 `.

* 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".

* Whitespaces between the `=` separator and attribute name or value are no
  longer ignored. E.g. `<a foo =bar>` produces two attributes "foo" and
  "=bar", both with value None; `<a foo= bar>` produces two attributes:
  "foo" with value "" and "bar" with value None.

* Fix data loss after unclosed script or style tag (gh-86155).

Also backport test.support.subTests() (gh-135120).

---------
(cherry picked from commit 0243f97cba)
(cherry picked from commit c555f889c3)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: Ezio Melotti <ezio.melotti@gmail.com>
Co-authored-by: Waylan Limberg <waylan.limberg@icloud.com>
2025-07-12 14:26:58 +02:00
Miss Islington (bot)
85766db07e
[3.10] gh-102555: Fix comment parsing in HTMLParser according to the HTML5 standard (GH-135664) (GH-136275)
* "--!>" now ends the comment.
* "-- >" no longer ends the comment.
* Support abnormally ended empty comments "<-->" and "<--->".

---------
(cherry picked from commit 8ac7613dc8)


Co-author: Kerim Kabirov <the.privat33r+gh@pm.me>

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: Ezio Melotti <ezio.melotti@gmail.com>
2025-07-12 14:24:27 +02:00
Serhiy Storchaka
fdc9d214c0
[3.10] gh-135462: Fix quadratic complexity in processing special input in HTMLParser (GH-135464) (GH-135485)
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 6eb6c5dbfb)
2025-07-03 23:05:53 +02:00
Łukasz Langa
f297a2292c
[3.10] gh-135374: Update the bundled copy of setuptools to 79.0.1 (#135398) 2025-06-11 18:10:27 +02:00
Pablo Galindo
3358f9abf4
Post 3.10.18 2025-06-03 20:02:06 +01:00
Pablo Galindo
88663ef89b
Python 3.10.18 2025-06-03 19:23:41 +01:00
T. Wouters
9c1110ef66
[3.10] gh-135034: Normalize link targets in tarfile, add os.path.realpath(strict='allow_missing') (GH-135037) (#135070)
Addresses CVEs 2024-12718, 2025-4138, 2025-4330, and 2025-4517.
(cherry picked from commit 3612d8f517)
(cherry picked from commit c358142cab)
(cherry picked from commit 371b4eaadc)

Co-authored-by: Łukasz Langa <lukasz@langa.pl>
Signed-off-by: Łukasz Langa <lukasz@langa.pl>
Co-authored-by: Petr Viktorin <encukou@gmail.com>
Co-authored-by: Seth Michael Larson <seth@python.org>
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2025-06-03 19:02:29 +02:00
Miss Islington (bot)
c71ea4ba06
[3.10] gh-128840: Fix parsing long IPv6 addresses with embedded IPv4 address (GH-134836) (GH-135089)
(cherry picked from commit d83576bf48)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2025-06-03 16:21:25 +02:00
Miss Islington (bot)
0a1f75d95d
[3.10] gh-123409: fix IPv6Address.reverse_pointer for IPv4-mapped addresses (GH-123419) (GH-135088)
Fix functionality that was broken with better textual representation for IPv4-mapped addresses (gh-87799)
(cherry picked from commit 77a2fb4bf1)

Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2025-06-03 16:01:08 +02:00
Miss Islington (bot)
c0e2658525
[3.10] gh-128840: Limit the number of parts in IPv6 address parsing (GH-128841) (GH-134614)
Limit length of IP address string to 39

(cherry picked from commit 47f1161d3a)

Co-authored-by: Seth Michael Larson <seth@python.org>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
2025-06-03 15:55:27 +02:00
Miss Islington (bot)
24bd1834ca
[3.10] gh-87799: Improve the textual representation of IPv4-mapped IPv6 addresses (GH-29345) (GH-135079)
Represent IPv4-mapped IPv6 address as xxxd.d.d.d,
where the 'x's are the hexadecimal values
of the six high-order 16-bit pieces of the address,
and the 'd's are the decimal values
of the four low-order 8-bit pieces of the address
(standard IPv4 representation).

(cherry picked from commit f22bf8e3cf)

Co-authored-by: opavliuk <40970635+opavlyuk@users.noreply.github.com>
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
Co-authored-by: Andrew Svetlov <andrew.svetlov@gmail.com>
2025-06-03 15:49:38 +02:00
Thomas Wouters
e0cb9afea4 Revert "Fix a glaring error in the logic backport of posixpath."
This reverts commit b357f2bca3, which was
never meant to go into 3.10.
2025-06-03 14:25:37 +02:00
Thomas Wouters
b357f2bca3 Fix a glaring error in the logic backport of posixpath. 2025-06-03 14:12:21 +02:00
Miss Islington (bot)
880adf6c31
[3.10] gh-134062: Fix hash collisions in IPv4Network and IPv6Network (GH-134063) (GH-134480)
(cherry picked from commit f3fc0c16e0)

Co-authored-by: Mike Salvatore <mike.s.salvatore@gmail.com>
2025-06-02 17:56:01 +02:00
Serhiy Storchaka
ab9893c406
[3.10] gh-133767: Fix use-after-free in the unicode-escape decoder with an error handler (GH-129648) (GH-133944) (GH-134345)
If the error handler is used, a new bytes object is created to set as
the object attribute of UnicodeDecodeError, and that bytes object then
replaces the original data. A pointer to the decoded data will became invalid
after destroying that temporary bytes object. So we need other way to return
the first invalid escape from _PyUnicode_DecodeUnicodeEscapeInternal().

_PyBytes_DecodeEscape() does not have such issue, because it does not
use the error handlers registry, but it should be changed for compatibility
with _PyUnicode_DecodeUnicodeEscapeInternal().
(cherry picked from commit 9f69a58623)
(cherry picked from commit 6279eb8c07)
(cherry picked from commit a75953b347)
(cherry picked from commit 0c33e5baed)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2025-06-02 17:55:48 +02:00
Miss Islington (bot)
f85e71a008
[3.10] gh-126500: test_ssl: Don't stop ThreadedEchoServer on OSError in ConnectionHandler; rely on __exit__ (GH-126503) (GH-126572) (#134030)
gh-126500: test_ssl: Don't stop ThreadedEchoServer on OSError in ConnectionHandler; rely on __exit__ (GH-126503)

If `read()` in the ConnectionHandler thread raises `OSError` (except `ConnectionError`),
the ConnectionHandler shuts down the entire ThreadedEchoServer,
preventing further connections.
It also does that for `EPROTOTYPE` in `wrap_conn`.

As far as I can see, this is done to avoid the server thread getting stuck,
forgotten, in its accept loop. However, since 2011 (5b95eb90a7)
the server is used as a context manager, and its `__exit__` does `stop()` and `join()`.
(I'm not sure if we *always* used `with` since that commit, but currently we do.)

Make sure that the context manager *is* used, and remove the `server.stop()`
calls from ConnectionHandler.

(cherry picked from commit c9cda1608e)
(cherry picked from commit aee80cd5e7)

Co-authored-by: Petr Viktorin <encukou@gmail.com>
2025-06-01 15:30:13 +02:00
Pablo Galindo
6322edd260
Post 3.10.17 2025-04-08 14:27:31 +01:00
Pablo Galindo
26ee8cad13
Python 3.10.17 2025-04-08 13:10:59 +01:00
Seth Michael Larson
53d4eaada7
[3.10] gh-131809: Upgrade vendored expat to 2.7.1 (GH-132192) (#132241)
(cherry picked from commit c0de650024)

Co-authored-by: Gregory P. Smith <greg@krypto.org>
2025-04-08 11:36:48 +02:00
R. David Murray
a4ef689ce6
[3.10] gh-80222: Fix email address header folding with long quoted-string (GH-122753) (GH-129111)
Email generators using email.policy.default could incorrectly omit the
quote ('"') characters from a quoted-string during header refolding,
leading to invalid address headers and enabling header spoofing. This
change restores the quote characters on a bare-quoted-string as the
header is refolded, and escapes backslash and quote chars in the string.
(cherry picked from commit 5aaf416858)

Co-authored-by: Mike Edmunds <medmunds@gmail.com>
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
2025-04-03 18:58:22 +02:00
Petr Viktorin
cfaee20d7e
[3.10] gh-121284: Fix email address header folding with parsed encoded-word (GH-122754) (GH-131411)
Email generators using email.policy.default may convert an RFC 2047
encoded-word to unencoded form during header refolding. In a structured
header, this could allow 'specials' chars outside a quoted-string,
leading to invalid address headers and enabling spoofing. This change
ensures a parsed encoded-word that contains specials is kept as an
encoded-word while the header is refolded.

[Better fix from @bitdancer.]

(cherry picked from commit 295b53df2a)

Co-authored-by: Mike Edmunds <medmunds@gmail.com>
Co-authored-by: R David Murray <rdmurray@bitdance.com>
2025-04-03 18:27:20 +02:00
Victor Stinner
48f455e11d
[3.10] gh-127257: ssl: Raise OSError for ERR_LIB_SYS (GH-127361) (GH-127905) (GH-131971)
gh-127257: ssl: Raise OSError for ERR_LIB_SYS (GH-127361)

From the ERR_raise manpage:

    ERR_LIB_SYS

        This "library code" indicates that a system error is
        being reported.  In this case, the reason code given
        to `ERR_raise()` and `ERR_raise_data()` *must* be
        `errno(3)`.

This PR only handles ERR_LIB_SYS for the high-lever error types
SSL_ERROR_SYSCALL and SSL_ERROR_SSL, i.e., not the ones where
OpenSSL indicates it has some more information about the issue.

(cherry picked from commit f4b31edf2d)
(cherry picked from commit 7f707fa6c6)

Co-authored-by: Petr Viktorin <encukou@gmail.com>
2025-04-03 18:26:17 +02:00
Seth Michael Larson
b22e6076d2
[3.10] gh-131261: Update libexpat to 2.7.0 (CVE-2024-8176) (GH-131272) (#131363) 2025-04-01 10:40:26 +01:00
Miss Islington (bot)
b8b4b713c5
[3.10] gh-105704: Disallow square brackets ([ and ]) in domain names for parsed URLs (GH-129418) (#129529)
(cherry picked from commit d89a5f6a6e)

Co-authored-by: Seth Michael Larson <seth@python.org>
Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
2025-02-19 14:36:23 +01:00
Miss Islington (bot)
817564849e
[3.10] gh-119511: Fix a potential denial of service in imaplib (GH-119514) (#129358)
The IMAP4 client could consume an arbitrary amount of memory when trying
to connect to a malicious server, because it read a "literal" data with a
single read(size) call, and BufferedReader.read() allocates the bytes
object of the specified size before reading. Now the IMAP4 client reads data
by chunks, therefore the amount of used memory is limited by the
amount of the data actually been sent by the server.
(cherry picked from commit 735f25c5e3)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
2025-02-19 14:30:32 +01:00
Hugo van Kemenade
457b2cac73
[3.10] gh-122544: Change OS image in GitHub Actions to Ubuntu 22.04 (GH-122566) (#130268)
Co-authored-by: Damien <81557462+Damien-Chen@users.noreply.github.com>
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: James De Bias <81095953+DBJim@users.noreply.github.com>
2025-02-19 14:19:52 +01:00
Miss Islington (bot)
4413f2e3f1
[3.10] gh-107262: Update Tkinter tests for Tcl/Tk 8.6.14 (GH-119322) (#130274)
Co-authored-by: James De Bias <81095953+DBJim@users.noreply.github.com>
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
2025-02-19 10:52:03 +02:00
Petr Viktorin
d09105c0df
[3.10] gh-129509: Add required key to the dummy Read the Docs config file (#129510) 2025-02-18 10:42:42 +02:00
Adam Turner
1d4db86b4d
[3.10] Docs: pin python-docs-theme to 2025.2 (GH-129576) (#130067)
[3.10] [3.11] Docs: pin python-docs-theme to 2025.2 (GH-129576)

* [3.11] Pin python-docs-theme

* Use today's release



---------
(cherry picked from commit 77ca2f66ea)

Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
2025-02-13 01:39:02 +00:00
Petr Viktorin
7b0351cf6a
[3.10] gh-129641: Docs GHA build: use upload-artifact@v4 & Python 3.12 (#129642)
* [3.10] gh-129641: Switch Docs GHA build to actions/upload-artifact@v4

Add options for backwards compatibility, from the docs at:
https://github.com/actions/upload-artifact?tab=readme-ov-file#breaking-changes

* Python Tutorial typo fix (#128077)

Backported form commit: 5a584c8f54

This is a trivial change meant to trigger a Docs build.

* Use Python 3.12 for the 3.10 docs build

The pinned version of Sphinx requires `imghdr`, removed in Python 3.13.

---------

Co-authored-by: shallow-beach <96891913+shallow-beach@users.noreply.github.com>
2025-02-13 01:31:51 +00:00