diff options
author | Erlend Egeberg Aasland <erlend.aasland@innova.no> | 2021-07-30 12:01:22 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-30 12:01:22 (GMT) |
commit | 0cb470e622ba37920c72e4d8f284741b9fbaea8b (patch) | |
tree | a7c7f54f7a519e0b022b9dd30fa3114e8f485b8f /Lib/sqlite3 | |
parent | 472997659b9c73089cdc22bd7eded6f6fdcffdfe (diff) | |
download | cpython-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.py | 21 |
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] |