mirror of https://github.com/python/cpython
sqlite: raise an OverflowError if a string or a BLOB is longer than INT_MAX
bytes Fix compiler warnings on Windows 64-bit
This commit is contained in:
parent
83e30bf4bd
commit
3f658bec35
|
@ -132,18 +132,26 @@ int pysqlite_statement_bind_parameter(pysqlite_Statement* self, int pos, PyObjec
|
|||
break;
|
||||
case TYPE_UNICODE:
|
||||
string = _PyUnicode_AsStringAndSize(parameter, &buflen);
|
||||
if (string != NULL)
|
||||
rc = sqlite3_bind_text(self->st, pos, string, buflen, SQLITE_TRANSIENT);
|
||||
else
|
||||
rc = -1;
|
||||
if (string == NULL)
|
||||
return -1;
|
||||
if (buflen > INT_MAX) {
|
||||
PyErr_SetString(PyExc_OverflowError,
|
||||
"string longer than INT_MAX bytes");
|
||||
return -1;
|
||||
}
|
||||
rc = sqlite3_bind_text(self->st, pos, string, (int)buflen, SQLITE_TRANSIENT);
|
||||
break;
|
||||
case TYPE_BUFFER:
|
||||
if (PyObject_AsCharBuffer(parameter, &buffer, &buflen) == 0) {
|
||||
rc = sqlite3_bind_blob(self->st, pos, buffer, buflen, SQLITE_TRANSIENT);
|
||||
} else {
|
||||
if (PyObject_AsCharBuffer(parameter, &buffer, &buflen) != 0) {
|
||||
PyErr_SetString(PyExc_ValueError, "could not convert BLOB to buffer");
|
||||
rc = -1;
|
||||
return -1;
|
||||
}
|
||||
if (buflen > INT_MAX) {
|
||||
PyErr_SetString(PyExc_OverflowError,
|
||||
"BLOB longer than INT_MAX bytes");
|
||||
return -1;
|
||||
}
|
||||
rc = sqlite3_bind_blob(self->st, pos, buffer, buflen, SQLITE_TRANSIENT);
|
||||
break;
|
||||
case TYPE_UNKNOWN:
|
||||
rc = -1;
|
||||
|
|
Loading…
Reference in New Issue