summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Modules/_sqlite/connection.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/Modules/_sqlite/connection.c b/Modules/_sqlite/connection.c
index 7365a88..50c6f0a 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;
}