[Python-checkins] bpo-40880: Fix invalid read in newline_in_string in pegen.c (#20666)

Pablo Galindo webhook-mailer at python.org
Fri Jun 5 19:52:32 EDT 2020


https://github.com/python/cpython/commit/2e6593db0086004a1ca7f7049218ff9573d473c2
commit: 2e6593db0086004a1ca7f7049218ff9573d473c2
branch: master
author: Pablo Galindo <Pablogsal at gmail.com>
committer: GitHub <noreply at github.com>
date: 2020-06-06T00:52:27+01:00
summary:

bpo-40880: Fix invalid read in newline_in_string in pegen.c (#20666)

* bpo-40880: Fix invalid read in newline_in_string in pegen.c

* Update Parser/pegen/pegen.c

Co-authored-by: Lysandros Nikolaou <lisandrosnik at gmail.com>

* Add NEWS entry

Co-authored-by: Lysandros Nikolaou <lisandrosnik at gmail.com>

files:
A Misc/NEWS.d/next/Core and Builtins/2020-06-06-00-23-19.bpo-40880.fjdzSh.rst
M Parser/pegen/pegen.c

diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-06-06-00-23-19.bpo-40880.fjdzSh.rst b/Misc/NEWS.d/next/Core and Builtins/2020-06-06-00-23-19.bpo-40880.fjdzSh.rst
new file mode 100644
index 0000000000000..ab42f5c205f81
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2020-06-06-00-23-19.bpo-40880.fjdzSh.rst	
@@ -0,0 +1,2 @@
+Fix invalid memory read in the new parser when checking newlines in string
+literals. Patch by Pablo Galindo.
diff --git a/Parser/pegen/pegen.c b/Parser/pegen/pegen.c
index c55ff7e45c0da..afe75d7f862ee 100644
--- a/Parser/pegen/pegen.c
+++ b/Parser/pegen/pegen.c
@@ -937,8 +937,8 @@ _PyPegen_number_token(Parser *p)
 static int // bool
 newline_in_string(Parser *p, const char *cur)
 {
-    for (char c = *cur; cur >= p->tok->buf; c = *--cur) {
-        if (c == '\'' || c == '"') {
+    for (const char *c = cur; c >= p->tok->buf; c--) {
+        if (*c == '\'' || *c == '"') {
             return 1;
         }
     }



More information about the Python-checkins mailing list