From 7430f23e1ae98300c4e13481832f2f9fc9e51650 Mon Sep 17 00:00:00 2001 From: Erlend Egeberg Aasland Date: Fri, 9 Apr 2021 01:05:44 +0200 Subject: [PATCH 1/2] [3.9] Fix possible refleak involving _PyArena_AddPyObject (GH-25289). (cherry picked from commit c0e11a3ceb9427e09db4224f394c7789bf6deec5) Co-authored-by: Erlend Egeberg Aasland --- Parser/pegen/pegen.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Parser/pegen/pegen.c b/Parser/pegen/pegen.c index 0a26275b23e0d06..60239e3df58f830 100644 --- a/Parser/pegen/pegen.c +++ b/Parser/pegen/pegen.c @@ -639,7 +639,10 @@ _PyPegen_fill_token(Parser *p) if (t->bytes == NULL) { return -1; } - PyArena_AddPyObject(p->arena, t->bytes); + if (_PyArena_AddPyObject(p->arena, t->bytes) < 0) { + Py_DECREF(t->bytes); + return -1; + } int lineno = type == STRING ? p->tok->first_lineno : p->tok->lineno; const char *line_start = type == STRING ? p->tok->multi_line_start : p->tok->line_start; From fef0866b05a26b8c4f6684a5245dc8bbc2f6424b Mon Sep 17 00:00:00 2001 From: Pablo Galindo Date: Fri, 9 Apr 2021 02:49:31 +0100 Subject: [PATCH 2/2] Update Parser/pegen/pegen.c --- Parser/pegen/pegen.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Parser/pegen/pegen.c b/Parser/pegen/pegen.c index 60239e3df58f830..111009af63e22a2 100644 --- a/Parser/pegen/pegen.c +++ b/Parser/pegen/pegen.c @@ -639,7 +639,7 @@ _PyPegen_fill_token(Parser *p) if (t->bytes == NULL) { return -1; } - if (_PyArena_AddPyObject(p->arena, t->bytes) < 0) { + if (PyArena_AddPyObject(p->arena, t->bytes) < 0) { Py_DECREF(t->bytes); return -1; }