bpo-31764: Prevent a crash in sqlite3.Cursor.close() in case the Cursor object is uninitialized (GH-4333)
This commit is contained in:
parent
47eaaa5524
commit
cd66d6d632
|
@ -177,6 +177,9 @@ class RegressionTests(unittest.TestCase):
|
|||
pass
|
||||
except:
|
||||
self.fail("should have raised ProgrammingError")
|
||||
with self.assertRaisesRegexp(sqlite.ProgrammingError,
|
||||
r'^Base Cursor\.__init__ not called\.$'):
|
||||
cur.close()
|
||||
|
||||
def CheckConnectionConstructorCallCheck(self):
|
||||
"""
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Prevent a crash in ``sqlite3.Cursor.close()`` in case the ``Cursor`` object
|
||||
is uninitialized. Patch by Oren Milman.
|
|
@ -1014,6 +1014,11 @@ PyObject* pysqlite_noop(pysqlite_Connection* self, PyObject* args)
|
|||
|
||||
PyObject* pysqlite_cursor_close(pysqlite_Cursor* self, PyObject* args)
|
||||
{
|
||||
if (!self->connection) {
|
||||
PyErr_SetString(pysqlite_ProgrammingError,
|
||||
"Base Cursor.__init__ not called.");
|
||||
return NULL;
|
||||
}
|
||||
if (!pysqlite_check_thread(self->connection) || !pysqlite_check_connection(self->connection)) {
|
||||
return NULL;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue