]> granicus.if.org Git - python/commitdiff
sqlite: raise an OverflowError if the result is longer than INT_MAX bytes
authorVictor Stinner <victor.stinner@gmail.com>
Mon, 18 Nov 2013 00:24:31 +0000 (01:24 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Mon, 18 Nov 2013 00:24:31 +0000 (01:24 +0100)
Fix a compiler warning on Windows 64-bit

Modules/_sqlite/connection.c

index 7365a8888789ca1ce3c2cc6f3b6a2339e6c04690..50c6f0a8d597c014250d7492b9e929d02004185d 100644 (file)
@@ -522,10 +522,16 @@ _pysqlite_set_result(sqlite3_context* context, PyObject* py_val)
         const char* buffer;
         Py_ssize_t buflen;
         if (PyObject_AsCharBuffer(py_val, &buffer, &buflen) != 0) {
-            PyErr_SetString(PyExc_ValueError, "could not convert BLOB to buffer");
+            PyErr_SetString(PyExc_ValueError,
+                            "could not convert BLOB to buffer");
             return -1;
         }
-        sqlite3_result_blob(context, buffer, buflen, SQLITE_TRANSIENT);
+        if (buflen > INT_MAX) {
+            PyErr_SetString(PyExc_OverflowError,
+                            "BLOB longer than INT_MAX bytes");
+            return -1;
+        }
+        sqlite3_result_blob(context, buffer, (int)buflen, SQLITE_TRANSIENT);
     } else {
         return -1;
     }