]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.11] GH-101696: invalidate type version tag in `_PyStaticType_Dealloc` (GH-101697...
authorErlend E. Aasland <erlend.aasland@protonmail.com>
Sat, 11 Feb 2023 08:30:42 +0000 (09:30 +0100)
committerGitHub <noreply@github.com>
Sat, 11 Feb 2023 08:30:42 +0000 (14:00 +0530)
[3.11] GH-101696: invalidate type version tag in `_PyStaticType_Dealloc` (GH-101697).
(cherry picked from commit d9de0792482d2ded364b0c7d2867b97a5da41b12)

Co-authored-by: Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com>
Misc/NEWS.d/next/Core and Builtins/2023-02-08-17-13-31.gh-issue-101696.seJhTt.rst [new file with mode: 0644]
Objects/typeobject.c

diff --git a/Misc/NEWS.d/next/Core and Builtins/2023-02-08-17-13-31.gh-issue-101696.seJhTt.rst b/Misc/NEWS.d/next/Core and Builtins/2023-02-08-17-13-31.gh-issue-101696.seJhTt.rst
new file mode 100644 (file)
index 0000000..ff2bbb4
--- /dev/null
@@ -0,0 +1 @@
+Invalidate type version tag in ``_PyStaticType_Dealloc`` for static types, avoiding bug where a false cache hit could crash the interpreter. Patch by Kumar Aditya.
index 9ee57105204e29fb7f4e86b21d29d4e58664736d..90c6425ffdfea571b8748c1bab6f90276458cf96 100644 (file)
@@ -4080,6 +4080,8 @@ _PyStaticType_Dealloc(PyTypeObject *type)
     }
 
     type->tp_flags &= ~Py_TPFLAGS_READY;
+    type->tp_flags &= ~Py_TPFLAGS_VALID_VERSION_TAG;
+    type->tp_version_tag = 0;
 }