summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2023-02-16-16-57-23.gh-issue-101952.Zo1dlq.rst1
-rw-r--r--Python/bytecodes.c2
-rw-r--r--Python/generated_cases.c.h2
3 files changed, 5 insertions, 0 deletions
diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-02-16-16-57-23.gh-issue-101952.Zo1dlq.rst b/Misc/NEWS.d/next/Core and Builtins/2023-02-16-16-57-23.gh-issue-101952.Zo1dlq.rst
new file mode 100644
index 0000000..3902c98
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2023-02-16-16-57-23.gh-issue-101952.Zo1dlq.rst
@@ -0,0 +1 @@
+Fix possible segfault in ``BUILD_SET`` opcode, when new set created.
diff --git a/Python/bytecodes.c b/Python/bytecodes.c
index d5d5034..84747f1 100644
--- a/Python/bytecodes.c
+++ b/Python/bytecodes.c
@@ -1302,6 +1302,8 @@ dummy_func(
inst(BUILD_SET, (values[oparg] -- set)) {
set = PySet_New(NULL);
+ if (set == NULL)
+ goto error;
int err = 0;
for (int i = 0; i < oparg; i++) {
PyObject *item = values[i];
diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h
index 8b8a716..730dfb7 100644
--- a/Python/generated_cases.c.h
+++ b/Python/generated_cases.c.h
@@ -1649,6 +1649,8 @@
PyObject **values = &PEEK(oparg);
PyObject *set;
set = PySet_New(NULL);
+ if (set == NULL)
+ goto error;
int err = 0;
for (int i = 0; i < oparg; i++) {
PyObject *item = values[i];