Commit graph

120560 commits

Author SHA1 Message Date
Serhiy Storchaka
5a8b19677d
[3.12] gh-119342: Fix a potential denial of service in plistlib (GH-119343) (#142149)
Reading a specially prepared small Plist file could cause OOM because file's
read(n) preallocates a bytes object for reading the specified amount of
data. Now plistlib reads large data by chunks, therefore the upper limit of
consumed memory is proportional to the size of the input file.
(cherry picked from commit 694922cf40)
2025-12-22 14:49:44 +01:00
Miss Islington (bot)
9c9dda6625
[3.12] gh-142145: Remove quadratic behavior in node ID cache clearing (GH-142146) (#142211)
* gh-142145: Remove quadratic behavior in node ID cache clearing (GH-142146)
* gh-142754: Ensure that Element & Attr instances have the ownerDocument attribute (GH-142794)
(cherry picked from commit 1cc7551b3f)
(cherry picked from commit 08d8e18ad8)
(cherry picked from commit 8d2d7bb2e7)

Co-authored-by: Jacob Walls <38668450+jacobtylerwalls@users.noreply.github.com>
Co-authored-by: Seth Michael Larson <seth@python.org>
Co-authored-by: Petr Viktorin <encukou@gmail.com>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Co-authored-by: Gregory P. Smith <68491+gpshead@users.noreply.github.com>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Co-authored-by: Gregory P. Smith <68491+gpshead@users.noreply.github.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
2025-12-22 14:48:49 +01:00
Sebastian Pipping
0e4cd89781
[3.12] gh-90949: add Expat API to prevent XML deadly allocations (CVE-2025-59375) (GH-139234) (#139527)
* [3.12] gh-90949: add Expat API to prevent XML deadly allocations (CVE-2025-59375) (GH-139234)

Expose the XML Expat 2.7.2 mitigation APIs to disallow use of
disproportional amounts of dynamic memory from within an Expat
parser (see CVE-2025-59375 for instance).

The exposed APIs are available on Expat parsers, that is,
parsers created by `xml.parsers.expat.ParserCreate()`, as:

- `parser.SetAllocTrackerActivationThreshold(threshold)`, and
- `parser.SetAllocTrackerMaximumAmplification(max_factor)`.

(cherry picked from commit f04bea44c3)
(cherry picked from commit 68a1778b77)
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2025-12-17 15:58:59 +01:00
Miss Islington (bot)
d849cf5fec
[3.12] gh-119452: Fix a potential virtual memory allocation denial of service in http.server (GH-142216) (#142297)
[3.14] gh-119452: Fix a potential virtual memory allocation denial of service in http.server (GH-142216)

The CGI server on Windows could consume the amount of memory specified
in the Content-Length header of the request even if the client does not
send such much data. Now it reads the POST request body by chunks,
therefore the memory consumption is proportional to the amount of sent
data.
(cherry picked from commit 0e4f4f1a46)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2025-12-15 15:11:38 +01:00
Serhiy Storchaka
a183a11db8
[3.12] gh-137836: Support more RAWTEXT and PLAINTEXT elements in HTMLParser (GH-137837) (GH-140842) (GH-140850)
(cherry picked from commit a17c57eee5)
(cherry picked from commit 0329bd11c7)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2025-10-31 17:57:28 +01:00
Łukasz Langa
c8a5f3435c
[3.12] gh-136065: Fix quadratic complexity in os.path.expandvars() (GH-134952) (GH-140847)
(cherry picked from commit f029e8db62)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
2025-10-31 17:50:42 +01:00
Thomas Wouters
8cb2092bd8 Post 3.12.12 2025-10-09 13:46:51 +02:00
Thomas Wouters
4a5632fbf9 Python 3.12.12 2025-10-09 13:07:00 +02:00
Miss Islington (bot)
26534f45a5
[3.12] gh-139310: skip test_aead_aes_gcm for Linux kernel between 6.16.0 and 6.17.x (GH-139552) (GH-139764)
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:06:33 +02:00
Jacob Coffee
52fe0445d5
[3.12] Remove Cirrus macOS runners from CI (GH-139799) (#139804)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
2025-10-08 22:42:51 +03:00
Jacob Coffee
4ba846bc9d
[3.12] gh-137638: Use macos-15-intel in GitHub Actions (GH-139154) (#139791)
Co-authored-by: 🇺🇦 Sviatoslav Sydorenko (Святослав Сидоренко) <wk.cvs.github@sydorenko.org.ua>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
2025-10-08 18:56:52 +03:00
Miss Islington (bot)
ba738f46a7
[3.12] gh-139436: Remove `dist-pdf` from the docs archives rebuild target (GH-139437) (GH-139694)
(cherry picked from commit 0e2cdd313b)

Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
2025-10-08 13:49:10 +02:00
Miss Islington (bot)
8392b2f0d3
[3.12] gh-139700: Check consistency of the zip64 end of central directory record (GH-139702) (GH-139708) (GH-139712)
(cherry picked from commit 333d4a6f49)

Support records with "zip64 extensible data" if there are no bytes
prepended to the ZIP file.
(cherry picked from commit 162997bb70)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2025-10-08 13:46:28 +02:00
Sebastian Pipping
dea7e3d5f8
[3.12] gh-139400: Make sure that parent parsers outlive their subparsers in pyexpat (GH-139403) (GH-139609)
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)
2025-10-07 13:56:31 +02:00
Miss Islington (bot)
f9f8cb92c9
[3.12] gh-139436: Remove link to the PDF downloads (GH-139142) (GH-139428)
(cherry picked from commit 6b5f15698a)

Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
2025-10-07 13:48:45 +02:00
Sebastian Pipping
aecbbee1a2
[3.12] gh-139312: Update bundled libexpat to 2.7.3 (GH-139319) (GH-139662)
(cherry picked from commit 48d0d0dd97)

Co-authored-by: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com>
2025-10-07 13:47:30 +02:00
Miss Islington (bot)
bfb9e2f4a4
[3.12] gh-138998: Upgrade vendored expat to 2.7.2 (GH-138999) (#139026)
(cherry picked from commit 64c876dd68)

Co-authored-by: Stan Ulbrych <89152624+StanFromIreland@users.noreply.github.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
Co-authored-by: Stan Ulbrych <stanulbrych@gmail.com>
2025-10-06 16:07:20 +02:00
Serhiy Storchaka
dcf24768c9
[3.12] gh-135661: Fix CDATA section parsing in HTMLParser (GH-135665) (#137774)
"] ]>" 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)
2025-10-06 16:06:29 +02:00
Seth Michael Larson
ade85bc5f4
[3.12] gh-139330: Check expat version/checksum in SBOM with refresh.sh
* [3.12] gh-139330: Check expat version/checksum in SBOM with refresh.sh

Check expat version/checksum in SBOM with refresh.sh
(cherry picked from commit 89b5571)

Co-authored-by: Seth Michael Larson <seth@python.org>

* 2.7.1
2025-09-26 17:23:04 +00:00
Hugo van Kemenade
cc9a7d8587
[3.12] gh-138744: GitHub Actions: pin to windows-2022 (GH-138743) (#138754)
(cherry picked from commit 6e78a539bf)
2025-09-26 19:06:04 +02:00
Hugo van Kemenade
71c84fadf4
[3.12] GH-136155: Use `sphinxext-opengraph` v0.12.0 (GH-137393) (#138741)
(cherry picked from commit 39bd7c3156)

Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
2025-09-24 12:27:40 +01:00
Hugo van Kemenade
1793b7291f
[3.12] gh-136155: Use `sphinxext-opengraph` v0.12.0 (#136406)
Co-authored-by: Maciej Olko <maciej.olko@affirm.com>
Co-authored-by: blurb-it[bot] <43283697+blurb-it[bot]@users.noreply.github.com>
Co-authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com>
2025-09-08 11:31:44 +03:00
Hugo van Kemenade
e709361fc8
[3.12] gh-131038: Use text=True in subprocesses in test_perf_profiler (#137117) (#138024)
gh-131038: Use text=True in subprocesses in test_perf_profiler (#137117)

(cherry picked from commit a852c7bdd4)

Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
2025-08-21 15:18:35 +01:00
Miss Islington (bot)
c9d9f78feb
[3.12] gh-130577: tarfile now validates archives to ensure member offsets are non-negative (GH-137027) (#137171)
(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-08-04 13:45:06 +02:00
Miss Islington (bot)
f66c75f11d
[3.12] gh-118350: Fix support of elements "textarea" and "title" in HTMLParser (GH-135310) (GH-136986)
(cherry picked from commit 4d02f31cdd)

Co-authored-by: Timon Viola <44016238+timonviola@users.noreply.github.com>
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
2025-07-22 14:31:27 +02:00
Miss Islington (bot)
ad695f5328
[3.12] gh-135661: Fix parsing attributes with whitespaces around the "=" separator in HTMLParser (GH-136908) (GH-136919)
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:56:39 +02:00
Miss Islington (bot)
ef053a92d5
[3.12] gh-102555: Fix comment parsing in HTMLParser according to the HTML5 standard (GH-135664) (GH-136273)
* "--!>" 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:52 +02:00
stratakis
aaca85949a
[3.12] gh-128605: Add branch protections for x86_64 in asm_trampolineS (#128606) (#135094)
[3.12] gh-128605: Add branch protections for x86_64 in asm_trampoline.S (#128606)

Apply Intel Control-flow Technology for x86-64 on asm_trampoline.S.

Required for mitigation against return-oriented programming (ROP)
and Call or Jump Oriented Programming (COP/JOP) attacks.

Manual application is required for the assembly files.

See also: https://sourceware.org/annobin/annobin.html/Test-cf-protection.html
2025-07-10 11:22:14 +01:00
Pablo Galindo Salgado
b69f3118a9
[3.12] gh-130077: Properly match full soft keywords in the parser (GH-135317) (#135400)
(cherry picked from commit ff2b5f40c2)
2025-07-09 00:40:55 +01:00
Serhiy Storchaka
c555f889c3
[3.12] gh-135661: Fix parsing start and end tags in HTMLParser according to the HTML5 standard (GH-135930) (GH-136268)
* 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)

Co-authored-by: Ezio Melotti <ezio.melotti@gmail.com>
Co-authored-by: Waylan Limberg <waylan.limberg@icloud.com>
2025-07-04 17:28:00 +02:00
Serhiy Storchaka
ab0893fd5c
[3.12] gh-135462: Fix quadratic complexity in processing special input in HTMLParser (GH-135464) (GH-135483)
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-04 00:12:10 +02:00
Łukasz Langa
033aa5cfd8
[3.12] gh-132415: Update vendored setuptools in `Lib/test/wheeldata (GH-132887) (GH-135393)
(cherry picked from commit c9f3f5b4ed)

Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
2025-06-11 17:28:51 +02:00
Miss Islington (bot)
d43cb4f31a
[3.12] gh-132415: Use shutil.which() in missing_compiler_executable() (GH-132906) (GH-135392)
Replace deprecated distutils.spawn.find_executable() with
shutil.which() in missing_compiler_executable() of test.support.
(cherry picked from commit de6482eda3)

Co-authored-by: Victor Stinner <vstinner@python.org>
2025-06-11 17:00:01 +02:00
Thomas Wouters
fd6c5fe786 Post 3.12.11 2025-06-03 20:31:47 +02:00
Thomas Wouters
55fee9cf21 Python 3.12.11 2025-06-03 17:41:47 +02:00
Petr Viktorin
28463dba11
[3.12] gh-135034: Remove test_realpath_permission (GH-135093)
The test was added in gh-110298, with a fix that was never backported
to 3.12 and below.
It was most likely skipped in the GHA run.
2025-06-03 16:58:06 +02:00
Miss Islington (bot)
fcf3ea0f99
[3.12] gh-128840: Fix parsing long IPv6 addresses with embedded IPv4 address (GH-134836) (GH-134847)
(cherry picked from commit d83576bf48)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
Co-authored-by: Łukasz Langa <lukasz@langa.pl>
2025-06-03 16:25:28 +02:00
Miss Islington (bot)
3217780bbe
[3.12] gh-123409: fix IPv6Address.reverse_pointer for IPv4-mapped addresses (GH-123419) (GH-135086)
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:08:03 +02:00
T. Wouters
19de092deb
[3.12] gh-135034: Normalize link targets in tarfile, add os.path.realpath(strict='allow_missing') (GH-135037) (GH-135066)
Addresses CVEs 2024-12718, 2025-4138, 2025-4330, and 2025-4517.

(cherry picked from commit 3612d8f517)

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 16:00:21 +02:00
Miss Islington (bot)
f3272d8630
[3.12] gh-87799: Improve the textual representation of IPv4-mapped IPv6 addresses (GH-29345) (GH-135081)
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:45:32 +02:00
Miss Islington (bot)
d4cf1fafaf
[3.12] gh-128840: Limit the number of parts in IPv6 address parsing (GH-128841) (#134612)
gh-128840: Limit the number of parts in IPv6 address parsing (GH-128841)

GH-128840: Limit the number of parts in IPv6 address parsing
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-05-25 20:34:44 -07:00
Miss Islington (bot)
d02823e8c4
[3.12] gh-134062: Fix hash collisions in IPv4Network and IPv6Network (GH-134063) (#134478)
gh-134062: Fix hash collisions in IPv4Network and IPv6Network (GH-134063)
(cherry picked from commit f3fc0c16e0)


gh-134062: Fix hash collisions in IPv4Network and IPv6Network
gh-134062: Add hash collision regression test

Co-authored-by: Mike Salvatore <mike.s.salvatore@gmail.com>
2025-05-25 20:34:22 -07:00
Serhiy Storchaka
4398b788ff
[3.12] gh-133767: Fix use-after-free in the unicode-escape decoder with an error handler (GH-129648) (GH-133944) (#134337)
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)
2025-05-25 20:33:22 -07:00
Miss Islington (bot)
310cd8943a
[3.12] gh-133410: Fix PR detection in build workflow (GH-133671) (#134057)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
2025-05-15 17:04:54 +03:00
Miss Islington (bot)
0c92fc364c
[3.12] Docs: remove link elements in builders other than HTML (GH-133720) (#134007)
Co-authored-by: Maciej Olko <maciej.olko@affirm.com>
2025-05-14 18:23:12 +03:00
Miss Islington (bot)
483729fbc6
[3.12] GH-133410: Use commit hashes for change detection (gh-133416) (#133426)
GH-133410: Use commit hashes for change detection (gh-133416)
(cherry picked from commit d530e74e44)

Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
2025-05-06 01:48:34 +02:00
Victor Stinner
aeb3a6f61a
[3.12] gh-132553: Build the perf tool without buildid cache (GH-132663) (#132718)
gh-132553: Build the perf tool without buildid cache (GH-132663)

(cherry picked from commit e01e582902)

Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
2025-04-25 02:26:30 +01:00
Miss Islington (bot)
95d9dea1c4
[3.12] Docs: Migrate entirely to PSF hosted plausible for analytics (GH-132648) (#132664)
Docs: Migrate entirely to PSF hosted plausible for analytics (GH-132648)
(cherry picked from commit 1d529cbc89)

Co-authored-by: Ee Durbin <ewdurbin@gmail.com>
2025-04-18 07:21:14 +03:00
Thomas Wouters
a740fbd8de Post 3.12.10 2025-04-08 16:17:38 +02:00
Thomas Wouters
0cc8128036 Python 3.12.10 2025-04-08 13:35:47 +02:00