Staging
v0.5.0
https://github.com/python/cpython
Revision 8de34cdb952a2e3b8d7a9a213845cad01a8cece3 authored by Pablo Galindo on 02 September 2020, 20:30:51 UTC, committed by GitHub on 02 September 2020, 20:30:51 UTC
This program can segfault the parser by stack overflow:

```
import ast

code = "f(" + ",".join(['a' for _ in range(100000)]) + ")"
print("Ready!")
ast.parse(code)
```

the reason is that the rule for arguments has a simple recursion when collecting args:

args[expr_ty]:
    [...]
    | a=named_expression b=[',' c=args { c }] {
        [...] }.
(cherry picked from commit 4a97b1517a6b5ff22e2984b677a680b07ff0ce11)

Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
1 parent a763ee3
History
Tip revision: 8de34cdb952a2e3b8d7a9a213845cad01a8cece3 authored by Pablo Galindo on 02 September 2020, 20:30:51 UTC
[3.9] bpo-41690: Use a loop to collect args in the parser instead of recursion (GH-22053) (GH-22067)
Tip revision: 8de34cd
File Mode Size
.azure-pipelines
.github
Doc
Grammar
Include
Lib
Mac
Misc
Modules
Objects
PC
PCbuild
Parser
Programs
Python
Tools
m4
.gitattributes -rw-r--r-- 1.8 KB
.gitignore -rw-r--r-- 1.8 KB
.travis.yml -rw-r--r-- 8.6 KB
CODE_OF_CONDUCT.md -rw-r--r-- 630 bytes
LICENSE -rw-r--r-- 12.5 KB
Makefile.pre.in -rw-r--r-- 68.8 KB
README.rst -rw-r--r-- 9.9 KB
aclocal.m4 -rw-r--r-- 13.1 KB
config.guess -rwxr-xr-x 43.1 KB
config.sub -rwxr-xr-x 35.4 KB
configure -rwxr-xr-x 499.5 KB
configure.ac -rw-r--r-- 168.6 KB
install-sh -rwxr-xr-x 15.0 KB
netlify.toml -rw-r--r-- 82 bytes
pyconfig.h.in -rw-r--r-- 44.4 KB
setup.py -rw-r--r-- 108.5 KB

README.rst

back to top