New submission from Erlend Egeberg Aasland <erlend.aasl...@innova.no>:
If the connection factory __init__ method fails, we hit a seg. fault when pysqlite_do_all_statements() is called to clean up the defect connection: PyList_Size received a NULL pointer. Suggested fix: Split pysqlite_do_all_statements() in two: one function for resetting cursors, and one for resetting/finalising statements. In each function, check if the respective lists are NULL pointers before iterating. See attached proposed patch. Test: def test_invalid_connection_factory(self): class DefectFactory(sqlite.Connection): def __init__(self, *args, **kwargs): return None self.con = sqlite.connect(":memory:", factory=DefectFactory) ---------- components: Library (Lib) files: patch.diff keywords: patch messages: 388082 nosy: berker.peksag, erlendaasland, serhiy.storchaka priority: normal severity: normal status: open title: [sqlite3] sqlite3.connect() segfaults if given a faulty Connection factory type: crash versions: Python 3.10 Added file: https://bugs.python.org/file49850/patch.diff _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue43398> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com