]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.9] bpo-45820: Fix a segfault when the parser fails without reading any input ...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Thu, 18 Nov 2021 00:24:43 +0000 (16:24 -0800)
committerGitHub <noreply@github.com>
Thu, 18 Nov 2021 00:24:43 +0000 (01:24 +0100)
Co-authored-by: Pablo Galindo Salgado <Pablogsal@gmail.com>
Co-authored-by: Ɓukasz Langa <lukasz@langa.pl>
.gitignore
Misc/NEWS.d/next/Core and Builtins/2021-11-16-19-00-27.bpo-45820.2X6Psr.rst [new file with mode: 0644]
Parser/pegen/pegen.c

index 864152451dd9d047f4d37f212c56c63337b63cb3..0dd3aee5c3151d49091b92aa4d675434362d0cb4 100644 (file)
@@ -136,5 +136,7 @@ Tools/ssl/win32
 !/Python/
 
 # Artifacts generated by 3.11 lying around when switching branches:
+/_bootstrap_python
 /Programs/_freeze_module
+/Python/deepfreeze/
 /Python/frozen_modules/ 
\ No newline at end of file
diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-11-16-19-00-27.bpo-45820.2X6Psr.rst b/Misc/NEWS.d/next/Core and Builtins/2021-11-16-19-00-27.bpo-45820.2X6Psr.rst
new file mode 100644 (file)
index 0000000..c2ec3d6
--- /dev/null
@@ -0,0 +1,2 @@
+Fix a segfault when the parser fails without reading any input. Patch by
+Pablo Galindo
index 2e986c5294f1998c0c9b328fa969b1c7cd190775..cdfbc12d16a34020dc9c898be4c00c536b843d67 100644 (file)
@@ -364,6 +364,14 @@ tokenizer_error(Parser *p)
 void *
 _PyPegen_raise_error(Parser *p, PyObject *errtype, const char *errmsg, ...)
 {
+    if (p->fill == 0) {
+        va_list va;
+        va_start(va, errmsg);
+        _PyPegen_raise_error_known_location(p, errtype, 0, 0, errmsg, va);
+        va_end(va);
+        return NULL;
+    }
+
     Token *t = p->known_err_token != NULL ? p->known_err_token : p->tokens[p->fill - 1];
     Py_ssize_t col_offset;
     if (t->col_offset == -1) {