summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPablo Galindo <Pablogsal@gmail.com>2020-10-25 23:03:41 (GMT)
committerGitHub <noreply@github.com>2020-10-25 23:03:41 (GMT)
commite68c67805e6a4c4ec80bea64be0e8373cc02d322 (patch)
tree129821827cbba9aea627cf226d9644b086cab3d0
parentd1a0a960ee493262fb95a0f5b795b5b6d75cecb8 (diff)
downloadcpython-e68c67805e6a4c4ec80bea64be0e8373cc02d322.zip
cpython-e68c67805e6a4c4ec80bea64be0e8373cc02d322.tar.gz
cpython-e68c67805e6a4c4ec80bea64be0e8373cc02d322.tar.bz2
bpo-42150: Avoid buffer overflow in the new parser (GH-22978)
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2020-10-25-21-14-18.bpo-42150.b70u_T.rst2
-rw-r--r--Parser/pegen.c3
2 files changed, 4 insertions, 1 deletions
diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-10-25-21-14-18.bpo-42150.b70u_T.rst b/Misc/NEWS.d/next/Core and Builtins/2020-10-25-21-14-18.bpo-42150.b70u_T.rst
new file mode 100644
index 0000000..62fabb8
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2020-10-25-21-14-18.bpo-42150.b70u_T.rst
@@ -0,0 +1,2 @@
+Fix possible buffer overflow in the new parser when checking for
+continuation lines. Patch by Pablo Galindo.
diff --git a/Parser/pegen.c b/Parser/pegen.c
index efa5ed9..c7343f7 100644
--- a/Parser/pegen.c
+++ b/Parser/pegen.c
@@ -990,7 +990,8 @@ bad_single_statement(Parser *p)
/* Newlines are allowed if preceded by a line continuation character
or if they appear inside a string. */
- if (!cur || *(cur - 1) == '\\' || newline_in_string(p, cur)) {
+ if (!cur || (cur != p->tok->buf && *(cur - 1) == '\\')
+ || newline_in_string(p, cur)) {
return 0;
}
char c = *cur;