gh-102153: Start stripping C0 control and space chars in `urlsplit` by illia-v · Pull Request #102508 · python/cpython

@illia-v

@bedevere-bot mentioned this pull request

Mar 7, 2023

@illia-v

@illia-v

@illia-v

@gpshead

Many existing applications rely (for better or worse) on the trailing spaces
being preserved by this API.  So this moves more conservative and keeps those.
The issue this change is addressing is triggered by leading spaces.

One example library relyong on behavior: Django's URL validator library (at
least in Django 3.2 and earlier; I have not checked later versions).  If
trailing spaces are stripped, its logic that involves urllib.parse for one logic
path within its checks can fail to reject some URLs as invalid.

@gpshead

Also be explicit about specifying utf-8 on encode and decode.

frenzymadness

Co-authored-by: Lumír 'Frenzy' Balhar <frenzy.madness@gmail.com>

@gpshead

@gpshead

encukou added a commit to encukou/cpython that referenced this pull request

Jun 7, 2023

carlosroman added a commit to DataDog/cpython that referenced this pull request

Jun 22, 2023
* Post 3.8.16

* [3.8] Update copyright years to 2023. (pythongh-100852)

* [3.8] Update copyright years to 2023. (pythongh-100848).
(cherry picked from commit 11f9932)

Co-authored-by: Benjamin Peterson <benjamin@python.org>

* Update additional copyright years to 2023.

Co-authored-by: Ned Deily <nad@python.org>

* [3.8] Update copyright year in README (pythonGH-100863) (pythonGH-100867)

(cherry picked from commit 30a6cc4)

Co-authored-by: Ned Deily <nad@python.org>
Co-authored-by: HARSHA VARDHAN <75431678+Thunder-007@users.noreply.github.com>

* [3.8] Correct CVE-2020-10735 documentation (pythonGH-100306) (python#100698)

(cherry picked from commit 1cf3d78)
(cherry picked from commit 88fe8d7)

Co-authored-by: Jeremy Paige <ucodery@gmail.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>

* [3.8] Bump Azure Pipelines to ubuntu-22.04 (pythonGH-101089) (python#101215)

(cherry picked from commit c22a55c)

Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>

* [3.8] pythongh-100180: Update Windows installer to OpenSSL 1.1.1s (pythonGH-100903) (python#101258)

* pythongh-101422: (docs) TarFile default errorlevel argument is 1, not 0 (pythonGH-101424)

(cherry picked from commit ea23271)

Co-authored-by: Owain Davies <116417456+OTheDev@users.noreply.github.com>

* [3.8] pythongh-95778: add doc missing in some places (pythonGH-100627) (python#101630)

(cherry picked from commit 4652182)

* [3.8] pythongh-101283: Improved fallback logic for subprocess with shell=True on Windows (pythonGH-101286) (python#101710)

Co-authored-by: Oleg Iarygin <oleg@arhadthedev.net>
Co-authored-by: Steve Dower <steve.dower@microsoft.com>

* [3.8] pythongh-101981: Fix Ubuntu SSL tests with OpenSSL (3.1.0-beta1) CI i… (python#102095)

[3.8] pythongh-101981: Fix Ubuntu SSL tests with OpenSSL (3.1.0-beta1) CI issue (pythongh-102079)

* [3.8] pythonGH-102306 Avoid GHA CI macOS test_posix failure by using the appropriate macOS SDK (pythonGH-102307)

[3.8] Avoid GHA CI macOS test_posix failure by using the appropriate macOS SDK.

* [3.8] pythongh-101726: Update the OpenSSL version to 1.1.1t (pythonGH-101727) (pythonGH-101752)

Fixes CVE-2023-0286 (High) and a couple of Medium security issues.
https://www.openssl.org/news/secadv/20230207.txt

Co-authored-by: Gregory P. Smith <greg@krypto.org>
Co-authored-by: Ned Deily <nad@python.org>

* [3.8] pythongh-102627: Replace address pointing toward malicious web page (pythonGH-102630) (pythonGH-102667)

(cherry picked from commit 61479d4)

Co-authored-by: Blind4Basics <32236948+Blind4Basics@users.noreply.github.com>
Co-authored-by: C.A.M. Gerlach <CAM.Gerlach@Gerlach.CAM>
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>

* [3.8] pythongh-101997: Update bundled pip version to 23.0.1 (pythonGH-101998). (python#102244)

(cherry picked from commit 89d9ff0)

* [3.8] pythongh-102950: Implement PEP 706 – Filter for tarfile.extractall (pythonGH-102953) (python#104548)

Backport of c8c3956

* [3.8] pythongh-99889: Fix directory traversal security flaw in uu.decode() (pythonGH-104096) (python#104332)

(cherry picked from commit 0aeda29)

Co-authored-by: Sam Carroll <70000253+samcarroll42@users.noreply.github.com>

* [3.8] pythongh-104049: do not expose on-disk location from SimpleHTTPRequestHandler (pythonGH-104067) (python#104121)

Do not expose the local server's on-disk location from `SimpleHTTPRequestHandler` when generating a directory index. (unnecessary information disclosure)

(cherry picked from commit c7c3a60)

Co-authored-by: Ethan Furman <ethan@stoneleaf.us>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>

* [3.8] pythongh-103935: Use `io.open_code()` when executing code in trace and profile modules (pythonGH-103947) (python#103954)

Co-authored-by: Tian Gao <gaogaotiantian@hotmail.com>

* [3.8] pythongh-68966: fix versionchanged in docs (pythonGH-105299)

* [3.8] Update GitHub CI workflow for macOS. (pythonGH-105302)

* [3.8] pythongh-105184: document that marshal functions can fail and need to be checked with PyErr_Occurred (pythonGH-105185) (python#105222)

(cherry picked from commit ee26ca1)

Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>

* [3.8] pythongh-102153: Start stripping C0 control and space chars in `urlsplit` (pythonGH-102508) (pythonGH-104575) (pythonGH-104592) (python#104593) (python#104895)

`urllib.parse.urlsplit` has already been respecting the WHATWG spec a bit pythonGH-25595.

This adds more sanitizing to respect the "Remove any leading C0 control or space from input" [rule](https://url.spec.whatwg.org/GH-url-parsing:~:text=Remove%20any%20leading%20and%20trailing%20C0%20control%20or%20space%20from%20input.) in response to [CVE-2023-24329](https://nvd.nist.gov/vuln/detail/CVE-2023-24329).

I simplified the docs by eliding the state of the world explanatory
paragraph in this security release only backport.  (people will see
that in the mainline /3/ docs)

(cherry picked from commit d7f8a5f)
(cherry picked from commit 2f630e1)
(cherry picked from commit 610cc0a)
(cherry picked from commit f48a96a)

Co-authored-by: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Co-authored-by: Illia Volochii <illia.volochii@gmail.com>
Co-authored-by: Gregory P. Smith [Google] <greg@krypto.org>

* [3.8] pythongh-103142: Upgrade binary builds and CI to OpenSSL 1.1.1u (pythonGH-105174) (pythonGH-105200) (pythonGH-105205) (python#105370)

Upgrade builds to OpenSSL 1.1.1u.

Also updates _ssl_data_111.h from OpenSSL 1.1.1u, _ssl_data_300.h from 3.0.9.

Manual edits to the _ssl_data_300.h file prevent it from removing any
existing definitions in case those exist in some peoples builds and were
important (avoiding regressions during backporting).

(cherry picked from commit ede89af)
(cherry picked from commit e15de14)

Co-authored-by: Gregory P. Smith <greg@krypto.org>
Co-authored-by: Ned Deily <nad@python.org>

* Python 3.8.17

* Post 3.8.17

* Updated CI to build 3.8.17

---------

Co-authored-by: Łukasz Langa <lukasz@langa.pl>
Co-authored-by: Benjamin Peterson <benjamin@python.org>
Co-authored-by: Ned Deily <nad@python.org>
Co-authored-by: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Co-authored-by: HARSHA VARDHAN <75431678+Thunder-007@users.noreply.github.com>
Co-authored-by: Gregory P. Smith <greg@krypto.org>
Co-authored-by: Jeremy Paige <ucodery@gmail.com>
Co-authored-by: Hugo van Kemenade <hugovk@users.noreply.github.com>
Co-authored-by: Steve Dower <steve.dower@python.org>
Co-authored-by: Owain Davies <116417456+OTheDev@users.noreply.github.com>
Co-authored-by: Éric <earaujo@caravan.coop>
Co-authored-by: Oleg Iarygin <oleg@arhadthedev.net>
Co-authored-by: Steve Dower <steve.dower@microsoft.com>
Co-authored-by: Dong-hee Na <donghee.na@python.org>
Co-authored-by: Blind4Basics <32236948+Blind4Basics@users.noreply.github.com>
Co-authored-by: C.A.M. Gerlach <CAM.Gerlach@Gerlach.CAM>
Co-authored-by: Pradyun Gedam <pradyunsg@gmail.com>
Co-authored-by: Petr Viktorin <encukou@gmail.com>
Co-authored-by: Sam Carroll <70000253+samcarroll42@users.noreply.github.com>
Co-authored-by: Ethan Furman <ethan@stoneleaf.us>
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Co-authored-by: Tian Gao <gaogaotiantian@hotmail.com>
Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
Co-authored-by: stratakis <cstratak@redhat.com>
Co-authored-by: Illia Volochii <illia.volochii@gmail.com>

hroncok pushed a commit to fedora-python/cpython that referenced this pull request

Oct 6, 2023

hroncok pushed a commit to fedora-python/cpython that referenced this pull request

Nov 28, 2023

stratakis pushed a commit to stratakis/cpython that referenced this pull request

Feb 22, 2024

stratakis pushed a commit to stratakis/cpython that referenced this pull request

Feb 27, 2024

hroncok pushed a commit to fedora-python/cpython that referenced this pull request

Mar 7, 2024

stratakis pushed a commit to stratakis/cpython that referenced this pull request

Mar 11, 2024

stratakis pushed a commit to stratakis/cpython that referenced this pull request

Mar 11, 2024

stratakis pushed a commit to stratakis/cpython that referenced this pull request

Mar 20, 2024

stratakis pushed a commit to stratakis/cpython that referenced this pull request

Mar 20, 2024

stratakis pushed a commit to stratakis/cpython that referenced this pull request

Mar 20, 2024

stratakis pushed a commit to stratakis/cpython that referenced this pull request

Mar 20, 2024

stratakis pushed a commit to stratakis/cpython that referenced this pull request

Mar 25, 2024

hroncok pushed a commit to fedora-python/cpython that referenced this pull request

Mar 26, 2024

mcepl pushed a commit to openSUSE-Python/cpython that referenced this pull request

Apr 2, 2024

@wRAR wRAR mentioned this pull request

Jan 31, 2025

hrnciar pushed a commit to fedora-python/cpython that referenced this pull request

Apr 23, 2025

hroncok pushed a commit to fedora-python/cpython that referenced this pull request

Jul 4, 2025

frenzymadness pushed a commit to fedora-python/cpython that referenced this pull request

Aug 12, 2025

xmo-odoo added a commit to odoo-dev/odoo that referenced this pull request

Oct 14, 2025
This is a private variable of the stdlib, it was added in Python
3.12 (python/cpython#102508) and only backported to
3.11.4 (cpython/python#104575) and 3.10.12 (cpython/python#104592) so
is not necessarily available in versions of 3.10 and 3.11 clients
might be running. So embed the content into the file directly to avoid
depending on the stdlib. Not to mention the concept of C0 is not
exactly novel or mutable.

Also inline it in its sole use, there's no reason to have multiple
string literals and a runtime concatenation.

Fixes odoo#230990

robodoo pushed a commit to odoo/odoo that referenced this pull request

Oct 14, 2025
This is a private variable of the stdlib, it was added in Python 3.12 (python/cpython#102508) and only backported to 3.11.4 (python/cpython#104575) and 3.10.12 (python/cpython#104592) so is not necessarily available in versions of 3.10 and 3.11 clients might be running. So embed the content into the file directly to avoid depending on the stdlib. Not to mention the concept of C0 is not exactly novel or mutable.

Also inline it in its sole use, there's no reason to have multiple string literals and a runtime concatenation.

Fixes #230990

closes #231371

Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>

fw-bot pushed a commit to odoo-dev/odoo that referenced this pull request

Oct 14, 2025
This is a private variable of the stdlib, it was added in Python
3.12 (python/cpython#102508) and only backported to
3.11.4 (cpython/python#104575) and 3.10.12 (cpython/python#104592) so
is not necessarily available in versions of 3.10 and 3.11 clients
might be running. So embed the content into the file directly to avoid
depending on the stdlib. Not to mention the concept of C0 is not
exactly novel or mutable.

Also inline it in its sole use, there's no reason to have multiple
string literals and a runtime concatenation.

Fixes odoo#230990

X-original-commit: 0374281

robodoo pushed a commit to odoo/odoo that referenced this pull request

Oct 14, 2025
This is a private variable of the stdlib, it was added in Python 3.12 (python/cpython#102508) and only backported to 3.11.4 (python/cpython#104575) and 3.10.12 (python/cpython#104592) so is not necessarily available in versions of 3.10 and 3.11 clients might be running. So embed the content into the file directly to avoid depending on the stdlib. Not to mention the concept of C0 is not exactly novel or mutable.

Also inline it in its sole use, there's no reason to have multiple string literals and a runtime concatenation.

Fixes #230990

closes #231428

Forward-port-of: #231371
Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>

hroncok pushed a commit to fedora-python/cpython that referenced this pull request

Feb 3, 2026