◐ Shell
clean mode source ↗

[3.11] gh-95778: CVE-2020-10735: Prevent DoS by very large int() by gpshead · Pull Request #96500 · python/cpython

and others added 8 commits

September 1, 2022 09:40
Co-authored-by: Christian Heimes <christian@python.org>
Abigail does not like the fact that `PyInterpreterState` has changed
size and some fields have been moved around. Even placing
`int_max_str_digits` after `_initial_thread` does not make her happy.

Let's move the field out ouf the state and make the setting a
process-wide global. It's ugly, but better ugly than breaking somebody's
code.

```
  [C]'function void PyEval_AcquireThread(PyThreadState*)' at ceval.c:452:1 has some indirect sub-type changes:
    parameter 1 of type 'PyThreadState*' has sub-type changes:
      in pointed to type 'typedef PyThreadState' at pytypedefs.h:24:1:
        underlying type 'struct _ts' at pystate.h:82:1 changed:
          type size hasn't changed
          1 data member changes (2 filtered):
           type of 'PyInterpreterState* _ts::interp' changed:
             in pointed to type 'typedef PyInterpreterState' at pytypedefs.h:25:1:
               underlying type 'struct _is' at pycore_interp.h:78:1 changed:
                 type size changed from 861952 to 862016 (in bits)
                 1 data member insertion:
                   'int _is::int_max_str_digits', at offset 859072 (in bits) at pycore_interp.h:179:1
                 2 data member changes (3 filtered):
                  type of 'pyruntimestate* _is::runtime' changed:
                    in pointed to type 'struct pyruntimestate' at pycore_runtime.h:59:1:
                      type size changed from 1333440 to 1333504 (in bits)
                      1 data member changes (2 filtered):

                  'PyThreadState _is::_initial_thread' offset changed from 859072 to 859136 (in bits) (by +64 bits)
```

@gpshead gpshead marked this pull request as ready for review

September 2, 2022 05:56

njsmith

@gpshead