From: Erlend Egeberg Aasland Date: Sun, 20 Jun 2021 19:24:32 +0000 (+0200) Subject: bpo-44087: Disallow instantiation of sqlite3.Statement (GH-26567) X-Git-Tag: v3.11.0a1~828 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7d0a47e1affd0a2f56600f3e9473f55f931595bd;p=thirdparty%2FPython%2Fcpython.git bpo-44087: Disallow instantiation of sqlite3.Statement (GH-26567) --- diff --git a/Lib/sqlite3/test/dbapi.py b/Lib/sqlite3/test/dbapi.py index 292423124546..e8bd8c59947c 100644 --- a/Lib/sqlite3/test/dbapi.py +++ b/Lib/sqlite3/test/dbapi.py @@ -26,6 +26,7 @@ import sys import threading import unittest +from test.support import check_disallow_instantiation from test.support.os_helper import TESTFN, unlink from test.support import threading_helper @@ -105,6 +106,10 @@ class ModuleTests(unittest.TestCase): sqlite.enable_shared_cache(enable) self.assertIn("dbapi.py", cm.filename) + def test_disallow_instantiation(self): + cx = sqlite.connect(":memory:") + check_disallow_instantiation(self, type(cx("select 1"))) + class ConnectionTests(unittest.TestCase): diff --git a/Modules/_sqlite/statement.c b/Modules/_sqlite/statement.c index 3960b21c8594..fcf13809763f 100644 --- a/Modules/_sqlite/statement.c +++ b/Modules/_sqlite/statement.c @@ -503,7 +503,7 @@ static PyType_Spec stmt_spec = { .name = MODULE_NAME ".Statement", .basicsize = sizeof(pysqlite_Statement), .flags = (Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | - Py_TPFLAGS_IMMUTABLETYPE), + Py_TPFLAGS_IMMUTABLETYPE | Py_TPFLAGS_DISALLOW_INSTANTIATION), .slots = stmt_slots, };