112499 Commits

Author SHA1 Message Date
Miss Islington (bot)
6027dbb199
[3.10] gh-136063: fix quadratic-complexity parsing in email.message._parseparam (GH-136072) (#140831)
gh-136063: fix quadratic-complexity parsing in `email.message._parseparam` (GH-136072)
(cherry picked from commit 680a5d070f59798bb88a1bb6eb027482b8d85c34)

Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
2026-01-25 17:11:05 +00:00
Miss Islington (bot)
5dc101675f
[3.10] gh-119451: Fix a potential denial of service in http.client (GH-119454) (#142142)
gh-119451: Fix a potential denial of service in http.client (GH-119454)

Reading the whole body of the HTTP response could cause OOM if
the Content-Length value is too large even if the server does not send
a large amount of data. Now the HTTP client reads large data by chunks,
therefore the amount of consumed memory is proportional to the amount
of sent data.
(cherry picked from commit 5a4c4a033a4a54481be6870aa1896fad732555b5)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2026-01-25 17:10:57 +00:00
Miss Islington (bot)
c97e875930
[3.10] gh-142145: Remove quadratic behavior in node ID cache clearing (GH-142146) (#142213)
* gh-142145: Remove quadratic behavior in node ID cache clearing (GH-142146)

* Remove quadratic behavior in node ID cache clearing

Co-authored-by: Jacob Walls <38668450+jacobtylerwalls@users.noreply.github.com>

* Add news fragment

---------
(cherry picked from commit 08d8e18ad81cd45bc4a27d6da478b51ea49486e4)

Co-authored-by: Seth Michael Larson <seth@python.org>
Co-authored-by: Jacob Walls <38668450+jacobtylerwalls@users.noreply.github.com>

* [3.14] gh-142754: Ensure that Element & Attr instances have the ownerDocument attribute (GH-142794) (#142818)

gh-142754: Ensure that Element & Attr instances have the ownerDocument attribute (GH-142794)
(cherry picked from commit 1cc7551b3f9f71efbc88d96dce90f82de98b2454)

Co-authored-by: Petr Viktorin <encukou@gmail.com>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>

* gh-142145: relax the no-longer-quadratic test timing (GH-143030)

* gh-142145: relax the no-longer-quadratic test timing

* require cpu resource
(cherry picked from commit 8d2d7bb2e754f8649a68ce4116271a4932f76907)

Co-authored-by: Gregory P. Smith <68491+gpshead@users.noreply.github.com>

* merge NEWS entries into one

---------

Co-authored-by: Seth Michael Larson <seth@python.org>
Co-authored-by: Jacob Walls <38668450+jacobtylerwalls@users.noreply.github.com>
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: Gregory P. Smith <greg@krypto.org>
2026-01-25 17:10:49 +00:00
Miss Islington (bot)
f2088a567e
[3.10] gh-119452: Fix a potential virtual memory allocation denial of service in http.server (GH-142216) (#142299)
[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 0e4f4f1a4633f2d215fb5a803cae278aeea31845)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
2026-01-25 17:10:42 +00:00
Miss Islington (bot)
8cdf6204f4
[3.10] gh-144125: email: verify headers are sound in BytesGenerator (#144180)
gh-144125: email: verify headers are sound in BytesGenerator
(cherry picked from commit 052e55e7d44718fe46cbba0ca995cb8fcc359413)

Co-authored-by: Seth Michael Larson <seth@python.org>
Co-authored-by: Denis Ledoux <dle@odoo.com>
Co-authored-by: Denis Ledoux <5822488+beledouxdenis@users.noreply.github.com>
Co-authored-by: Petr Viktorin <302922+encukou@users.noreply.github.com>
Co-authored-by: Bas Bloemsaat <1586868+basbloemsaat@users.noreply.github.com>
2026-01-25 17:10:00 +00:00
Seth Michael Larson
7852d72b65
[3.10] gh-143919: Reject control characters in http cookies (#144094)
(cherry picked from commit 95746b3a13a985787ef53b977129041971ed7f70)

Co-authored-by: Bartosz Sławecki <bartosz@ilikepython.com>
Co-authored-by: sobolevn <mail@sobolevn.me>
2026-01-25 17:05:23 +00:00
Seth Michael Larson
34d76b00da
[3.10] gh-143925: Reject control characters in data: URL mediatypes (#144115)
(cherry picked from commit f25509e78e8be6ea73c811ac2b8c928c28841b9f)
(cherry picked from commit 2c9c746077d8119b5bcf5142316992e464594946)
2026-01-25 17:05:15 +00:00
Gregory P. Smith
2f84024955
[3.10] gh-143916: Reject control characters in wsgiref.headers.Headers
gh-143916: Reject control characters in wsgiref.headers.Headers  (GH-143917)

* Add 'test.support' fixture for C0 control characters
* gh-143916: Reject control characters in wsgiref.headers.Headers

(cherry picked from commit f7fceed79ca1bceae8dbe5ba5bc8928564da7211)
(cherry picked from commit 22e4d55285cee52bc4dbe061324e5f30bd4dee58)

Co-authored-by: Seth Michael Larson <seth@python.org>
2026-01-20 22:51:43 +00:00
Hugo van Kemenade
f12346d225
[3.10] Bump GitHub Actions (GH-143757) (#143803) 2026-01-13 17:23:17 +02:00
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 fe694a6db620062f467469bd2bb987315d72fd62)

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 a17c57eee5b5cc81390750d07e4800b19c0c3084)
(cherry picked from commit 0329bd11c7e98484727bbb9062d53a8fa53ac7fd)
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 f029e8db626ddc6e3a3beea4eff511a71aaceb5c)

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 8334a1b55c93068f5d243852029baa83377ff6c9)
(cherry picked from commit 0cd888b8d3a47428097571dddf5a0b5de37084e0)

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 0e2cdd313ba5c67c5e2e21d993399b890e687c63)

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 v3.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 41712c4e095b2cc988febfe3887616c2779c6210)

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 333d4a6f4967d3ace91492a39ededbcf3faa76a6)
(cherry picked from commit 162997bb70e067668c039700141770687bc8f267)

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 0cbbfc462119b9107b373c24d2bda5a1271bed36)
(cherry picked from commit dcf24768c918c41821cda6fe6a1aa20ce26545dd)

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 6edb2ddb5f3695cf4938979d645f31d7fba43ec8)

* 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 987af36a717793e97aad57f7da36a0677edfbdbd)

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 64c876dd6812ade19cb7a0c619111d30f0b2b860)
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 6e78a539bfb406238ec251ba01b7a1819e5c303e)
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 4d02f31cdd45d81b95540d9076222b709d4f2335)

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 7040aa54f14676938970e10c5f74ea93cd56aa38)

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 dee650189497735edbc08a54edabb5b06ef1bd09)

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 0243f97cbadec8d985e63b1daec5d1cbc850cae3)
(cherry picked from commit c555f889c3558a0a8cd8d8ecc2b493014b88a700)

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 8ac7613dc8b8f82253d7c0e2b6ef6ed703a0a1ee)


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 6eb6c5dbfb528bd07d77b60fd71fd05d81d45c41)
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 v3.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 3612d8f51741b11f36f8fb0494d79086bac9390a)
(cherry picked from commit c358142cab7ce621a2745262a90df967b357f61c)
(cherry picked from commit 371b4eaadcd5846d79af8f7912e4320f9cd9fae4)

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 d83576bf48d07d5e29d5d171c4e25afb048622aa)

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 77a2fb4bf1a1b160d6ce105508288fc77f636943)

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 47f1161d3a2bec52b5b5e952150141709c247da2)

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 f22bf8e3cf899896cf587099d29290cb43aa9724)

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 b357f2bca375948aca03047d9209ce364e64bfa4, 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 f3fc0c16e08b317cb201cf1073e934e6909f1251)

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 9f69a58623bd01349a18ba0c7a9cb1dad6a51e8e)
(cherry picked from commit 6279eb8c076d89d3739a6edb393e43c7929b429d)
(cherry picked from commit a75953b347716fff694aa59a7c7c2489fa50d1f5)
(cherry picked from commit 0c33e5baedf18ebcb04bc41dff7cfc614d5ea5fe)

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 (5b95eb90a7167285b6544b50865227c584943c9a)
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 c9cda1608edf7664c10f4f467e24591062c2fe62)
(cherry picked from commit aee80cd5e7c6be90c69b9aa9c09faa19b91cdccd)

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 v3.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 c0de6500249469e6fc5b458d6afb6bad1b6755cd)

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 5aaf4168583)

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 295b53df2aa18deb625a7da41f7e4babfe6ef34b)

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