]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.10] gh-95876: Fix format string in pegen error location code (GH-95877 (GH-95901)
authorChristian Heimes <christian@python.org>
Thu, 11 Aug 2022 19:41:35 +0000 (21:41 +0200)
committerGitHub <noreply@github.com>
Thu, 11 Aug 2022 19:41:35 +0000 (12:41 -0700)
(cherry picked from commit b4c857d0fd74abb1ede6fe083c4fa3ca728b2b83)

Co-authored-by: Christian Heimes <christian@python.org>
Misc/NEWS.d/next/Core and Builtins/2022-08-11-09-19-55.gh-issue-95876.YpQfoV.rst [new file with mode: 0644]
Parser/pegen.c

diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-08-11-09-19-55.gh-issue-95876.YpQfoV.rst b/Misc/NEWS.d/next/Core and Builtins/2022-08-11-09-19-55.gh-issue-95876.YpQfoV.rst
new file mode 100644 (file)
index 0000000..96b6901
--- /dev/null
@@ -0,0 +1,4 @@
+Fix format string in ``_PyPegen_raise_error_known_location`` that can lead
+to memory corruption on some 64bit systems. The function was building a
+tuple with ``i`` (int) instead of ``n`` (Py_ssize_t) for Py_ssize_t
+arguments.
index 016f070c4745089d3c217736b0803e3b0d258742..acad95520a9fc59b7a4b0d8f4836bd5732295f4a 100644 (file)
@@ -547,7 +547,7 @@ _PyPegen_raise_error_known_location(Parser *p, PyObject *errtype,
                          byte_offset_to_character_offset(error_line, end_col_offset) :
                          end_col_number;
     }
-    tmp = Py_BuildValue("(OiiNii)", p->tok->filename, lineno, col_number, error_line, end_lineno, end_col_number);
+    tmp = Py_BuildValue("(OnnNnn)", p->tok->filename, lineno, col_number, error_line, end_lineno, end_col_number);
     if (!tmp) {
         goto error;
     }