cpython/Python
Gregory P. Smith 8f0fa4bd10
[3.10] gh-95778: CVE-2020-10735: Prevent DoS by very large int() (#96501)
Integer to and from text conversions via CPython's bignum `int` type is not safe against denial of service attacks due to malicious input. Very large input strings with hundred thousands of digits can consume several CPU seconds.

This PR comes fresh from a pile of work done in our private PSRT security response team repo.

This backports https://github.com/python/cpython/pull/96499 aka 511ca94520

Signed-off-by: Christian Heimes [Red Hat] <christian@python.org>
Tons-of-polishing-up-by: Gregory P. Smith [Google] <greg@krypto.org>
Reviews via the private PSRT repo via many others (see the NEWS entry in the PR).

<!-- gh-issue-number: gh-95778 -->
* Issue: gh-95778
<!-- /gh-issue-number -->

I wrote up [a one pager for the release managers](https://docs.google.com/document/d/1KjuF_aXlzPUxTK4BMgezGJ2Pn7uevfX7g0_mvgHlL7Y/edit#).
2022-09-02 09:51:49 -07:00
..
clinic [3.10] gh-95778: CVE-2020-10735: Prevent DoS by very large int() (#96501) 2022-09-02 09:51:49 -07:00
Python-ast.c bpo-46289: Make conversion of FormattedValue not optional on ASDL (GH-30467) 2022-01-07 14:30:18 -08:00
README Issue #18093: Factor out the programs that embed the runtime 2014-07-25 21:52:14 +10:00
_warnings.c bpo-43268: Pass interp rather than tstate to internal functions (GH-24580) 2021-02-19 15:10:45 +01:00
asdl.c bpo-43244: Remove ast.h, asdl.h, Python-ast.h headers (GH-24933) 2021-03-23 20:47:40 +01:00
ast.c [3.10] bpo-43897: Reject "_" captures and top-level MatchStar in the AST validator (GH-27432) (GH-27435) 2021-07-28 18:02:14 -07:00
ast_opt.c bpo-43892: Validate the first term of complex literal value patterns (GH-25735) 2021-04-29 17:19:28 -07:00
ast_unparse.c bpo-43892: Make match patterns explicit in the AST (GH-25585) 2021-04-28 22:58:44 -07:00
bltinmodule.c bpo-45123: PyAiter_Check and PyObject_GetAiter fix & rename. (GH-28194) (GH-28199) 2021-09-07 12:43:33 +01:00
bootstrap_hash.c [3.10] Remove trailing spaces (GH-28709) 2021-10-03 20:03:49 +03:00
ceval.c [3.10] gh-94510: Raise on re-entrant calls to sys.setprofile and syssettrace (GH-94511) (#94579) 2022-07-05 19:52:33 +01:00
ceval_gil.h bpo-43268: Pass interp rather than tstate to internal functions (GH-24580) 2021-02-19 15:10:45 +01:00
codecs.c bpo-42157: unicodedata avoids references to UCD_Type (GH-22990) 2020-10-26 19:19:36 +01:00
compile.c [3.10] GH-94329: Don't raise on excessive stack consumption (GH-94421) (#94448) 2022-07-11 13:21:17 +01:00
condvar.h bpo-44740: Lowercase "internet" and "web" where appropriate. (GH-27378) (GH-27380) 2021-07-27 00:34:32 +02:00
context.c bpo-43268: Pass interp rather than tstate to internal functions (GH-24580) 2021-02-19 15:10:45 +01:00
dtoa.c Revert "bpo-40521: Make dtoa bigint free list per-interpreter (GH-24821)" (GH-24964) 2021-03-22 11:58:59 +01:00
dup2.c bpo-32150: Expand tabs to spaces in C files. (#4583) 2017-11-28 17:56:10 +02:00
dynamic_annotations.c bpo-32241: Add the const qualifire to declarations of umodifiable strings. (#4748) 2017-12-12 13:55:04 +02:00
dynload_hpux.c bpo-44959: Add fallback to extension modules with '.sl' suffix on HP-UX (GH-27857) (GH-29152) 2021-11-18 17:19:19 +01:00
dynload_shlib.c bpo-41894: Fix UnicodeDecodeError while loading native module (GH-22466) 2020-10-15 10:53:27 +09:00
dynload_stub.c
dynload_win.c bpo-36346: Make using the legacy Unicode C API optional (GH-21437) 2020-07-10 23:26:06 +03:00
errors.c [3.10] bpo-45848: Allow the parser to get error lines from encoded files (GH-29646) (GH-29661) 2021-11-20 16:34:56 +01:00
fileutils.c bpo-47260: Fix os.closerange() potentially being a no-op in a seccomp sandbox (GH-32418) 2022-04-08 11:10:38 -07:00
formatter_unicode.c bpo-28146: Fix a confusing error message in str.format() (GH-24213) 2021-05-13 14:24:49 -07:00
frozen.c bpo-43372: Use _freeze_importlib for regen-frozen. (GH-24759) 2021-03-06 13:34:03 -08:00
frozen_hello.h bpo-42739: Don't use sentinels to mark end of line table. (GH-25657) 2021-04-29 13:12:51 +01:00
frozenmain.c bpo-40268: Remove a few pycore_pystate.h includes (GH-19510) 2020-04-14 17:52:15 +02:00
future.c bpo-38605: Revert making 'from __future__ import annotations' the default (GH-25490) 2021-04-21 12:41:19 +01:00
getargs.c [3.10] gh-94938: Fix errror detection of unexpected keyword arguments (GH-94999) (GH-95354) 2022-07-28 09:52:00 +03:00
getcompiler.c closes bpo-43278: remove unnecessary leading '\n' from COMPILER when build with GCC/Clang (GH-24606) 2021-02-25 20:24:21 -08:00
getcopyright.c [3.10] Update copyright year to 2022. (GH-30335) (GH-30336) 2022-01-02 13:13:04 -08:00
getopt.c bpo-40527: Fix command line argument parsing (GH-19955) 2020-05-06 22:22:17 +09:00
getplatform.c bpo-32150: Expand tabs to spaces in C files. (#4583) 2017-11-28 17:56:10 +02:00
getversion.c bpo-32150: Expand tabs to spaces in C files. (#4583) 2017-11-28 17:56:10 +02:00
hamt.c gh-93065: Fix HAMT to iterate correctly over 7-level deep trees (GH-93066) (GH-93146) 2022-05-24 10:52:29 +02:00
hashtable.c bpo-41061: Fix incorrect expressions in hashtable (GH-21028) 2020-06-22 00:41:48 -07:00
import.c [3.11] gh-93741: Add private C API _PyImport_GetModuleAttrString() (GH-93742) (GH-93792) 2022-06-16 00:19:29 -07:00
importdl.c Fix format string in _PyImport_LoadDynamicModuleWithSpec() (GH-28863) 2021-10-12 10:10:59 -07:00
importdl.h PEP 489: Multi-phase extension module initialization 2015-05-23 22:24:10 +10:00
importlib.h [3.10] bpo-46724: Use `JUMP_ABSOLUTE` for all backward jumps. (GH-31326) (GH-31354) 2022-02-16 11:26:02 +00:00
importlib_external.h [3.10] bpo-46724: Use `JUMP_ABSOLUTE` for all backward jumps. (GH-31326) (GH-31354) 2022-02-16 11:26:02 +00:00
importlib_zipimport.h [3.10] bpo-46724: Use `JUMP_ABSOLUTE` for all backward jumps. (GH-31326) (GH-31354) 2022-02-16 11:26:02 +00:00
initconfig.c [3.10] gh-95778: CVE-2020-10735: Prevent DoS by very large int() (#96501) 2022-09-02 09:51:49 -07:00
makeopcodetargets.py makeopcodetargets.py: we need to import Lib/opcode.py 2016-03-26 01:04:37 +01:00
marshal.c bpo-41180: Replace marshal code.__new__ audit event with marshal.load[s] and marshal.dumps (GH-26970) 2021-06-30 18:52:25 +01:00
modsupport.c bpo-1635741: Add PyModule_AddObjectRef() function (GH-23122) 2020-11-04 13:59:15 +01:00
mysnprintf.c bpo-36020: Require vsnprintf() to build Python (GH-20899) 2020-06-16 00:54:44 +02:00
mystrtoul.c bpo-37752: Delete redundant Py_CHARMASK in normalizestring() (GH-15095) 2019-09-10 17:04:08 +01:00
opcode_targets.h bpo-43754: Eliminate bindings for partial pattern matches (GH-25229) 2021-05-02 13:02:10 -07:00
pathconfig.c [3.10] Fix typos in the Python directory (GH-28767) (GH-28799) 2021-10-07 17:30:08 +02:00
preconfig.c bpo-43510: Implement PEP 597 opt-in EncodingWarning. (GH-19481) 2021-03-29 12:28:14 +09:00
pyarena.c bpo-43244: Remove the pyarena.h header (GH-25007) 2021-03-24 02:23:01 +01:00
pyctype.c
pyfpe.c bpo-29137: Remove fpectl module (#4789) 2018-01-05 23:15:34 -08:00
pyhash.c bpo-43475: Fix worst case collision behavior for NaN instances (GH-25493) 2021-04-22 08:34:57 -07:00
pylifecycle.c bpo-44584: Deprecate PYTHONTHREADDEBUG env var (GH-27065) 2021-08-06 04:32:37 -07:00
pymath.c bpo-29782: Consolidate _Py_Bit_Length() (GH-20739) 2020-06-15 14:33:48 +02:00
pystate.c bpo-42540: reallocation of id_mutex should not force default allocator (GH-29564) 2021-11-17 13:16:01 -08:00
pystrcmp.c bpo-41524: fix pointer bug in PyOS_mystr{n}icmp (GH-21845) 2020-08-27 14:45:25 +09:00
pystrhex.c bpo-40313: speed up bytes.hex() (GH-19594) 2020-04-20 17:17:52 -07:00
pystrtod.c bpo-42519: Replace PyMem_MALLOC() with PyMem_Malloc() (GH-23586) 2020-12-01 09:56:42 +01:00
pythonrun.c bpo-45614: Fix traceback display for exceptions with invalid module name (GH-29726) (GH-29826) 2021-11-29 10:07:24 +00:00
pytime.c bpo-37205: time.time() cannot fail with fatal error (GH-23314) 2020-11-16 16:08:05 +01:00
stdlib_module_names.h [3.10] bpo-45688: Add _scproxy to sys.stdlib_module_names (GH-29358) (GH-29361) 2021-11-02 12:32:36 +01:00
structmember.c bpo-44655: Include the name of the type in unset __slots__ attribute errors (GH-27199) (GH-27201) 2021-07-17 01:01:53 +01:00
suggestions.c [3.10] bpo-45826: Fix a crash in suggestions.c by checking for `traceback is None` (GH-29590) (GH-29602) 2021-11-18 01:28:04 +01:00
symtable.c bpo-46042: Improve SyntaxError locations in the symbol table (GH-30059) (GH-30064) 2021-12-12 01:24:12 +00:00
sysmodule.c [3.10] gh-95778: CVE-2020-10735: Prevent DoS by very large int() (#96501) 2022-09-02 09:51:49 -07:00
thread.c bpo-44584: Deprecate PYTHONTHREADDEBUG env var (GH-27065) 2021-08-06 04:32:37 -07:00
thread_nt.h bpo-41299: Reduce lag in Windows threading timeouts by using a higher precision time source (GH-26568) (GH-26580) 2021-06-20 21:12:27 +01:00
thread_pthread.h bpo-41710: PyThread_acquire_lock_timed() uses sem_clockwait() (GH-28671) 2021-10-01 18:22:49 +02:00
traceback.c bpo-45831: _Py_DumpASCII() uses a single write() call if possible (GH-29596) (GH-29598) 2021-11-17 22:59:19 +01:00
wordcode_helpers.h bpo-31338 (#3374) 2017-09-14 18:13:16 -07:00

README

Miscellaneous source files for the main Python shared library