Index: Modules/_sqlite/connection.c =================================================================== --- Modules/_sqlite/connection.c (révision 64771) +++ Modules/_sqlite/connection.c (copie de travail) @@ -940,6 +940,7 @@ { PyObject* res; PyObject* begin_statement; + char* begin_statement_str; Py_XDECREF(self->isolation_level); @@ -972,12 +973,16 @@ return -1; } - self->begin_statement = PyMem_Malloc(PyString_Size(begin_statement) + 2); + begin_statement_str = PyString_AsString(begin_statement); + if (!begin_statement_str) { + return -1; + } + self->begin_statement = PyMem_Malloc(strlen(begin_statement_str) + 2); if (!self->begin_statement) { return -1; } - strcpy(self->begin_statement, PyString_AsString(begin_statement)); + strcpy(self->begin_statement, begin_statement_str); Py_DECREF(begin_statement); } Index: Modules/_sqlite/module.c =================================================================== --- Modules/_sqlite/module.c (révision 64771) +++ Modules/_sqlite/module.c (copie de travail) @@ -147,6 +147,7 @@ { PyTypeObject* type; PyObject* caster; + int rc; if (!PyArg_ParseTuple(args, "OO", &type, &caster)) { return NULL; @@ -159,7 +160,9 @@ pysqlite_BaseTypeAdapted = 1; } - microprotocols_add(type, (PyObject*)&pysqlite_PrepareProtocolType, caster); + rc = microprotocols_add(type, (PyObject*)&pysqlite_PrepareProtocolType, caster); + if (rc == -1) + return NULL; Py_INCREF(Py_None); return Py_None;