]> git.ipfire.org Git - thirdparty/Python/cpython.git/commit
[3.7] gh-95778: CVE-2020-10735: Prevent DoS by very large int() (GH-96504)
authorGregory P. Smith <greg@krypto.org>
Tue, 6 Sep 2022 05:24:36 +0000 (22:24 -0700)
committerGitHub <noreply@github.com>
Tue, 6 Sep 2022 05:24:36 +0000 (01:24 -0400)
commit15ec1afd4fcd2da1e2d2b256c562fb42d8d886a2
tree2d57338531c6e22098a8a76f26262894920a85bc
parentd5fe9951fe6e69e9175eca24170a220747ec9047
[3.7] gh-95778: CVE-2020-10735: Prevent DoS by very large int() (GH-96504)

Converting between `int` and `str` in bases other than 2
(binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base 10 (decimal) now
raises a `ValueError` if the number of digits in string form is above a
limit to avoid potential denial of service attacks due to the algorithmic
complexity. This is a mitigation for CVE-2020-10735
(https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10735).

This new limit can be configured or disabled by environment variable, command
line flag, or :mod:`sys` APIs. See the `Integer String Conversion Length
Limitation` documentation.  The default limit is 4300
digits in string form.

Patch by Gregory P. Smith [Google] and Christian Heimes [Red Hat] with feedback
from Victor Stinner, Thomas Wouters, Steve Dower, Ned Deily, and Mark Dickinson.
26 files changed:
Doc/data/python3.7m.abi
Doc/library/functions.rst
Doc/library/json.rst
Doc/library/stdtypes.rst
Doc/library/sys.rst
Doc/library/test.rst
Doc/using/cmdline.rst
Doc/whatsnew/3.7.rst
Include/internal/pycore_long.h [new file with mode: 0644]
Include/internal/pystate.h
Lib/test/support/__init__.py
Lib/test/test_ast.py
Lib/test/test_cmd_line.py
Lib/test/test_compile.py
Lib/test/test_decimal.py
Lib/test/test_int.py
Lib/test/test_json/test_decode.py
Lib/test/test_sys.py
Lib/test/test_xmlrpc.py
Misc/NEWS.d/next/Security/2022-08-07-16-53-38.gh-issue-95778.ch010gps.rst [new file with mode: 0644]
Modules/main.c
Objects/longobject.c
Python/ast.c
Python/clinic/sysmodule.c.h
Python/pylifecycle.c
Python/sysmodule.c