--- /dev/null
+Fixed a bug in the :mod:`_ssl` module that was throwing :exc:`OverflowError`
+when using :meth:`_ssl._SSLSocket.write` and :meth:`_ssl._SSLSocket.read`
+for a big value of the ``len`` parameter. Patch by Pablo Galindo
do {
PySSL_BEGIN_ALLOW_THREADS
- retval = SSL_write_ex(self->ssl, b->buf, (int)b->len, &count);
+ retval = SSL_write_ex(self->ssl, b->buf, (size_t)b->len, &count);
err = _PySSL_errno(retval == 0, self->ssl, retval);
PySSL_END_ALLOW_THREADS
self->err = err;
/*[clinic input]
_ssl._SSLSocket.read
- size as len: int
+ size as len: Py_ssize_t
[
buffer: Py_buffer(accept={rwbuffer})
]
[clinic start generated code]*/
static PyObject *
-_ssl__SSLSocket_read_impl(PySSLSocket *self, int len, int group_right_1,
- Py_buffer *buffer)
-/*[clinic end generated code: output=00097776cec2a0af input=ff157eb918d0905b]*/
+_ssl__SSLSocket_read_impl(PySSLSocket *self, Py_ssize_t len,
+ int group_right_1, Py_buffer *buffer)
+/*[clinic end generated code: output=49b16e6406023734 input=ec48bf622be1c4a1]*/
{
PyObject *dest = NULL;
char *mem;
do {
PySSL_BEGIN_ALLOW_THREADS
- retval = SSL_read_ex(self->ssl, mem, len, &count);
+ retval = SSL_read_ex(self->ssl, mem, (size_t)len, &count);
err = _PySSL_errno(retval == 0, self->ssl, retval);
PySSL_END_ALLOW_THREADS
self->err = err;
{"read", (PyCFunction)_ssl__SSLSocket_read, METH_VARARGS, _ssl__SSLSocket_read__doc__},
static PyObject *
-_ssl__SSLSocket_read_impl(PySSLSocket *self, int len, int group_right_1,
- Py_buffer *buffer);
+_ssl__SSLSocket_read_impl(PySSLSocket *self, Py_ssize_t len,
+ int group_right_1, Py_buffer *buffer);
static PyObject *
_ssl__SSLSocket_read(PySSLSocket *self, PyObject *args)
{
PyObject *return_value = NULL;
- int len;
+ Py_ssize_t len;
int group_right_1 = 0;
Py_buffer buffer = {NULL, NULL};
switch (PyTuple_GET_SIZE(args)) {
case 1:
- if (!PyArg_ParseTuple(args, "i:read", &len)) {
+ if (!PyArg_ParseTuple(args, "n:read", &len)) {
goto exit;
}
break;
case 2:
- if (!PyArg_ParseTuple(args, "iw*:read", &len, &buffer)) {
+ if (!PyArg_ParseTuple(args, "nw*:read", &len, &buffer)) {
goto exit;
}
group_right_1 = 1;
#ifndef _SSL_ENUM_CRLS_METHODDEF
#define _SSL_ENUM_CRLS_METHODDEF
#endif /* !defined(_SSL_ENUM_CRLS_METHODDEF) */
-/*[clinic end generated code: output=3b6f4471fb187d85 input=a9049054013a1b77]*/
+/*[clinic end generated code: output=5a7d7bf5cf8ee092 input=a9049054013a1b77]*/