summary |
shortlog | log |
commit |
commitdiff |
tree
first ⋅ prev ⋅ next
Gregory P. Smith [Mon, 5 Sep 2022 09:21:03 +0000 (02:21 -0700)]
[3.9] gh-95778: CVE-2020-10735: Prevent DoS by very large int() (#96502)
* Correctly pre-check for int-to-str conversion (#96537)
Converting a large enough `int` to a decimal string raises `ValueError` as expected. However, the raise comes _after_ the quadratic-time base-conversion algorithm has run to completion. For effective DOS prevention, we need some kind of check before entering the quadratic-time loop. Oops! =)
The quick fix: essentially we catch _most_ values that exceed the threshold up front. Those that slip through will still be on the small side (read: sufficiently fast), and will get caught by the existing check so that the limit remains exact.
The justification for the current check. The C code check is:
```c
max_str_digits / (3 * PyLong_SHIFT) <= (size_a - 11) / 10
```
In GitHub markdown math-speak, writing $M$ for `max_str_digits`, $L$ for `PyLong_SHIFT` and $s$ for `size_a`, that check is:
$$\left\lfloor\frac{M}{3L}\right\rfloor \le \left\lfloor\frac{s - 11}{10}\right\rfloor$$
From this it follows that
$$\frac{M}{3L} < \frac{s-1}{10}$$
hence that
$$\frac{L(s-1)}{M} > \frac{10}{3} > \log_2(10).$$
So
$$2^{L(s-1)} > 10^M.$$
But our input integer $a$ satisfies $|a| \ge 2^{L(s-1)}$, so $|a|$ is larger than $10^M$. This shows that we don't accidentally capture anything _below_ the intended limit in the check.
<!-- gh-issue-number: gh-95778 -->
* Issue: gh-95778
<!-- /gh-issue-number -->
Co-authored-by: Gregory P. Smith [Google LLC] <greg@krypto.org>
Co-authored-by: Christian Heimes <christian@python.org>
Co-authored-by: Mark Dickinson <dickinsm@gmail.com>
Gbp-Pq: Name 0002-3.9-gh-95778-CVE-2020-10735-Prevent-DoS-by-very-larg.patch
Miss Islington (bot) [Tue, 11 Oct 2022 21:13:18 +0000 (14:13 -0700)]
[3.9] gh-68966: Make mailcap refuse to match unsafe filenames/types/params (GH-91993) (#98190)
gh-68966: Make mailcap refuse to match unsafe filenames/types/params (GH-91993)
(cherry picked from commit
b9509ba7a9c668b984dab876c7926fe1dc5aa0ba)
Co-authored-by: Petr Viktorin <encukou@gmail.com>
Gbp-Pq: Name 0001-3.9-gh-68966-Make-mailcap-refuse-to-match-unsafe-fil.patch
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
mpdecimal-2.5.1
Gbp-Pq: Name mpdecimal-2.5.1.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
sphinx3
Gbp-Pq: Name sphinx3.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
hurd_kfreebsd_thread_native_id
Gbp-Pq: Name hurd_kfreebsd_thread_native_id.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
sysconfigdata-name
Gbp-Pq: Name sysconfigdata-name.diff
Dave Jones [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
Use aligned access for _sha3 module on ARM.
Gbp-Pq: Name arm-alignment.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
argparse-no-shutil
Gbp-Pq: Name argparse-no-shutil.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
build-math-object
Gbp-Pq: Name build-math-object.diff
Benjamin Moody [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
Add the option to build Texinfo-format documentation.
Bug-Debian: https://bugs.debian.org/881959
Last-Update: 2017-11-27
Gbp-Pq: Name doc-build-texinfo.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
local-doc-references
Gbp-Pq: Name local-doc-references.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
pydoc-use-pager
# DP: pydoc: use the pager command if available.
# DP: pydoc: use the pager command if available.
Gbp-Pq: Name pydoc-use-pager.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
reproducible-buildinfo
# DP: Build getbuildinfo.o with DATE/TIME values when defined
# DP: Build getbuildinfo.o with DATE/TIME values when defined
Gbp-Pq: Name reproducible-buildinfo.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
mangle-fstack-protector
# DP: When using GCC versions older than 4.9, automagically mangle
# DP: -fstack-protector-strong to -fstack-protector
# DP: When using GCC versions older than 4.9, automagically mangle
# DP: -fstack-protector-strong to -fstack-protector
Gbp-Pq: Name mangle-fstack-protector.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
ensurepip-disabled
# DP: Disable ensurepip for the system installation, only enable it for virtual environments.
# DP: Disable ensurepip for the system installation, only enable it for virtual environments.
Gbp-Pq: Name ensurepip-disabled.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
ensurepip-wheels
Gbp-Pq: Name ensurepip-wheels.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
disable-some-tests
# DP: Disable some failing tests we are not interested in
# DP: Disable some failing tests we are not interested in
Gbp-Pq: Name disable-some-tests.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
tempfile-minimal
# DP: Avoid shutil import when it is not available.
# DP: Avoid shutil import when it is not available.
Gbp-Pq: Name tempfile-minimal.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
multiarch-extname
# DP: Make sure to rename extensions to a tag including the MULTIARCH name
# DP: Make sure to rename extensions to a tag including the MULTIARCH name
this patch can be dropped for python3.5 final, if the upstream chage is kept.
Gbp-Pq: Name multiarch-extname.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
test-no-random-order
# DP: Don't run the test suite in random order.
# DP: Don't run the test suite in random order.
Gbp-Pq: Name test-no-random-order.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
ext-no-libpython-link
# DP: Don't link extensions with the shared libpython library.
# DP: Don't link extensions with the shared libpython library.
Gbp-Pq: Name ext-no-libpython-link.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
lib2to3-no-pickled-grammar
Gbp-Pq: Name lib2to3-no-pickled-grammar.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
multiarch
Gbp-Pq: Name multiarch.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
ctypes-arm
Gbp-Pq: Name ctypes-arm.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
lib-argparse
# DP: argparse.py: Make the gettext import conditional
# DP: argparse.py: Make the gettext import conditional
Gbp-Pq: Name lib-argparse.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
disable-sem-check
# DP: Assume working semaphores, don't rely on running kernel for the check.
# DP: Assume working semaphores, don't rely on running kernel for the check.
Gbp-Pq: Name disable-sem-check.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
langpack-gettext
# DP: Description: support alternative gettext tree in
# DP: /usr/share/locale-langpack; if a file is present in both trees,
# DP: prefer the newer one
# DP: Upstream status: Ubuntu-Specific
# DP: Description: support alternative gettext tree in
# DP: /usr/share/locale-langpack; if a file is present in both trees,
# DP: prefer the newer one
# DP: Upstream status: Ubuntu-Specific
Gbp-Pq: Name langpack-gettext.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
profiled-build
# DP: Ignore errors in the profile task.
# DP: Ignore errors in the profile task.
Gbp-Pq: Name profiled-build.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
bdist-wininst-notfound
# DP: suggest installation of the pythonX.Y-dev package, if bdist_wininst
# DP: cannot find the wininst-* files.
# DP: suggest installation of the pythonX.Y-dev package, if bdist_wininst
# DP: cannot find the wininst-* files.
Gbp-Pq: Name bdist-wininst-notfound.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
setup-modules
Gbp-Pq: Name setup-modules.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
link-opt
# DP: Call the linker with -O1 -Bsymbolic-functions
# DP: Call the linker with -O1 -Bsymbolic-functions
Gbp-Pq: Name link-opt.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
gdbm-import
# DP: suggest installation of python3-gdbm package on failing _gdbm import
# DP: suggest installation of python3-gdbm package on failing _gdbm import
Gbp-Pq: Name gdbm-import.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
tkinter-import
# DP: suggest installation of python-tk package on failing _tkinter import
# DP: suggest installation of python-tk package on failing _tkinter import
Gbp-Pq: Name tkinter-import.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
distutils-sysconfig-2
Gbp-Pq: Name distutils-sysconfig-2.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
distutils-sysconfig
# DP: Get CONFIGURE_CFLAGS, CONFIGURE_CPPFLAGS, CONFIGURE_LDFLAGS from
# DP: the python build, when CFLAGS, CPPFLAGS, LDSHARED) are not set
# DP: in the environment.
# DP: Get CONFIGURE_CFLAGS, CONFIGURE_CPPFLAGS, CONFIGURE_LDFLAGS from
# DP: the python build, when CFLAGS, CPPFLAGS, LDSHARED) are not set
# DP: in the environment.
Gbp-Pq: Name distutils-sysconfig.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
distutils-link
# DP: Don't add standard library dirs to library_dirs and runtime_library_dirs.
# DP: Don't add standard library dirs to library_dirs and runtime_library_dirs.
Gbp-Pq: Name distutils-link.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
locale-module
# DP: * Lib/locale.py:
# DP: - Don't map 'utf8', 'utf-8' to 'utf', which is not a known encoding
# DP: for glibc.
# DP: * Lib/locale.py:
# DP: - Don't map 'utf8', 'utf-8' to 'utf', which is not a known encoding
# DP: for glibc.
Gbp-Pq: Name locale-module.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
distutils-install-layout
# DP: distutils: Add an option --install-layout=deb, which
# DP: - installs into $prefix/dist-packages instead of $prefix/site-packages.
# DP: - doesn't encode the python version into the egg name.
# DP: distutils: Add an option --install-layout=deb, which
# DP: - installs into $prefix/dist-packages instead of $prefix/site-packages.
# DP: - doesn't encode the python version into the egg name.
Gbp-Pq: Name distutils-install-layout.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
deb-locations
# DP: adjust locations of directories to debian policy
# DP: adjust locations of directories to debian policy
Gbp-Pq: Name deb-locations.diff
Matthias Klose [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
deb-setup
# DP: Don't include /usr/local/include and /usr/local/lib as gcc search paths
# DP: Don't include /usr/local/include and /usr/local/lib as gcc search paths
Gbp-Pq: Name deb-setup.diff
Sean Whitton [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
python3.9 (3.9.2-1+deb11u3) bullseye-security; urgency=high
* Non-maintainer upload by the LTS Team.
[ Bastien Roucariès ]
* Fix CVE-2025-0938:
The Python standard library functions `urllib.parse.urlsplit` and
`urlparse` accepted domain names that included square brackets
which isn't valid according to RFC 3986.
Square brackets are only meant to be used as delimiters for specifying
IPv6 and IPvFuture hosts in URLs. This could result in differential
parsing across the Python URL parser and other specification-compliant
URL parsers.
[ Sean Whitton ]
- Fix CVE-2022-0391: Missing input sanitisation when parsing URLs, which
could lead to injection accounts.
- Fix CVE-2025-1795: The implementation of e-mail header parsing and
folding would encode the comma used to separate list items which could
cause receiving applications to interpret two items in the list as
though they were one item.
[dgit import unpatched python3.9 3.9.2-1+deb11u3]
Sean Whitton [Thu, 20 Mar 2025 02:07:39 +0000 (10:07 +0800)]
Import python3.9_3.9.2-1+deb11u3.debian.tar.xz
[dgit import tarball python3.9 3.9.2-1+deb11u3 python3.9_3.9.2-1+deb11u3.debian.tar.xz]
Matthias Klose [Sun, 28 Feb 2021 17:03:44 +0000 (18:03 +0100)]
Import python3.9_3.9.2.orig.tar.xz
[dgit import orig python3.9_3.9.2.orig.tar.xz]