summaryrefslogtreecommitdiffstats
path: root/Lib/sqlite3
diff options
context:
space:
mode:
authorErlend Egeberg Aasland <erlend.aasland@innova.no>2021-07-30 12:01:22 (GMT)
committerGitHub <noreply@github.com>2021-07-30 12:01:22 (GMT)
commit0cb470e622ba37920c72e4d8f284741b9fbaea8b (patch)
treea7c7f54f7a519e0b022b9dd30fa3114e8f485b8f /Lib/sqlite3
parent472997659b9c73089cdc22bd7eded6f6fdcffdfe (diff)
downloadcpython-0cb470e622ba37920c72e4d8f284741b9fbaea8b.zip
cpython-0cb470e622ba37920c72e4d8f284741b9fbaea8b.tar.gz
cpython-0cb470e622ba37920c72e4d8f284741b9fbaea8b.tar.bz2
[3.10] bpo-31746: Prevent segfaults when sqlite3.Connection is uninitialised (GH-27431). (GH-27472)
(cherry picked from commit 7e311e496b0e26b3d3c62fe9b0ed2a4677c37ee9) Co-authored-by: Erlend Egeberg Aasland <erlend.aasland@innova.no>
Diffstat (limited to 'Lib/sqlite3')
-rw-r--r--Lib/sqlite3/test/dbapi.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/Lib/sqlite3/test/dbapi.py b/Lib/sqlite3/test/dbapi.py
index a958d4d..2d02045 100644
--- a/Lib/sqlite3/test/dbapi.py
+++ b/Lib/sqlite3/test/dbapi.py
@@ -197,6 +197,26 @@ class ConnectionTests(unittest.TestCase):
cx.execute('insert into test(id) values(1)')
+class UninitialisedConnectionTests(unittest.TestCase):
+ def setUp(self):
+ self.cx = sqlite.Connection.__new__(sqlite.Connection)
+
+ def test_uninit_operations(self):
+ funcs = (
+ lambda: self.cx.isolation_level,
+ lambda: self.cx.total_changes,
+ lambda: self.cx.in_transaction,
+ lambda: self.cx.iterdump(),
+ lambda: self.cx.cursor(),
+ lambda: self.cx.close(),
+ )
+ for func in funcs:
+ with self.subTest(func=func):
+ self.assertRaisesRegex(sqlite.ProgrammingError,
+ "Base Connection.__init__ not called",
+ func)
+
+
class CursorTests(unittest.TestCase):
def setUp(self):
self.cx = sqlite.connect(":memory:")
@@ -949,6 +969,7 @@ def suite():
ModuleTests,
SqliteOnConflictTests,
ThreadTests,
+ UninitialisedConnectionTests,
]
return unittest.TestSuite(
[unittest.TestLoader().loadTestsFromTestCase(t) for t in tests]