]> granicus.if.org Git - python/commitdiff
Issue #17073: Fix some integer overflows in sqlite3 module.
authorSerhiy Storchaka <storchaka@gmail.com>
Thu, 7 Feb 2013 15:03:46 +0000 (17:03 +0200)
committerSerhiy Storchaka <storchaka@gmail.com>
Thu, 7 Feb 2013 15:03:46 +0000 (17:03 +0200)
1  2 
Lib/sqlite3/test/hooks.py
Lib/sqlite3/test/userfunctions.py
Misc/NEWS
Modules/_sqlite/connection.c
Modules/_sqlite/cursor.c
Modules/_sqlite/statement.c

Simple merge
Simple merge
diff --cc Misc/NEWS
Simple merge
index bc4ce50de57b057beddcb79f3e780f49b0240cd9,d52bea49c359e6f4f675ec4bbe730648d1f30b6c..28bd647b3f5e1e73c98e869384e040b0087bbd50
@@@ -669,9 -675,10 +675,10 @@@ error
  
  void _pysqlite_final_callback(sqlite3_context* context)
  {
-     PyObject* function_result = NULL;
+     PyObject* function_result;
      PyObject** aggregate_instance;
 -    PyObject* aggregate_class;
 +    _Py_IDENTIFIER(finalize);
+     int ok;
  
  #ifdef WITH_THREAD
      PyGILState_STATE threadstate;
          goto error;
      }
  
 -    function_result = PyObject_CallMethod(*aggregate_instance, "finalize", "");
 +    function_result = _PyObject_CallMethodId(*aggregate_instance, &PyId_finalize, "");
-     if (!function_result) {
+     Py_DECREF(*aggregate_instance);
+     ok = 0;
+     if (function_result) {
+         ok = _pysqlite_set_result(context, function_result) == 0;
+         Py_DECREF(function_result);
+     }
+     if (!ok) {
          if (_enable_callback_tracebacks) {
              PyErr_Print();
          } else {
Simple merge
index 9884860ec066dcb61caa0d50f7acc1803c5bffb1,09d95d9a67f12c3457cf0676db9fc924fbc5e4c8..471a0676a83fafd8c521c8dafb563c8181b76b01
@@@ -87,10 -88,9 +88,9 @@@ int pysqlite_statement_create(pysqlite_
      return rc;
  }
  
 -int pysqlite_statement_bind_parameter(pysqlite_Statement* self, int pos, PyObject* parameter, int allow_8bit_chars)
 +int pysqlite_statement_bind_parameter(pysqlite_Statement* self, int pos, PyObject* parameter)
  {
      int rc = SQLITE_OK;
-     PY_LONG_LONG longlongval;
      const char* buffer;
      char* string;
      Py_ssize_t buflen;