bpo-44087: Disallow instantiation of sqlite3.Statement (GH-26567)

This commit is contained in:
Erlend Egeberg Aasland 2021-06-20 21:24:32 +02:00 committed by GitHub
parent 185ecdc146
commit 7d0a47e1af
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 1 deletions

View File

@ -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):

View File

@ -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,
};