From: Victor Stinner Date: Mon, 18 Nov 2013 00:24:31 +0000 (+0100) Subject: sqlite: raise an OverflowError if the result is longer than INT_MAX bytes X-Git-Tag: v3.4.0b1~210 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=83ed42bfbf003bd7720e2893a4da18a300f48fa8;p=thirdparty%2FPython%2Fcpython.git sqlite: raise an OverflowError if the result is longer than INT_MAX bytes Fix a compiler warning on Windows 64-bit --- diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c index 7365a8888789..50c6f0a8d597 100644 --- a/Modules/_sqlite/connection.c +++ b/Modules/_sqlite/connection.c @@ -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; }