mirror of https://github.com/python/cpython.git
[3.10] gh-98793: Fix typecheck in `overlapped.c` (GH-98835) (#98890)
Co-authored-by: Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com>
(cherry picked from commit 3ac8c0ab6e
)
This commit is contained in:
parent
1907e5a7cc
commit
d3d1738acd
|
@ -239,6 +239,17 @@ def test_read_self_pipe_restart(self):
|
||||||
self.close_loop(self.loop)
|
self.close_loop(self.loop)
|
||||||
self.assertFalse(self.loop.call_exception_handler.called)
|
self.assertFalse(self.loop.call_exception_handler.called)
|
||||||
|
|
||||||
|
def test_address_argument_type_error(self):
|
||||||
|
# Regression test for https://github.com/python/cpython/issues/98793
|
||||||
|
proactor = self.loop._proactor
|
||||||
|
sock = socket.socket(type=socket.SOCK_DGRAM)
|
||||||
|
bad_address = None
|
||||||
|
with self.assertRaises(TypeError):
|
||||||
|
proactor.connect(sock, bad_address)
|
||||||
|
with self.assertRaises(TypeError):
|
||||||
|
proactor.sendto(sock, b'abc', addr=bad_address)
|
||||||
|
sock.close()
|
||||||
|
|
||||||
|
|
||||||
class WinPolicyTests(test_utils.TestCase):
|
class WinPolicyTests(test_utils.TestCase):
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Fix argument typechecks in :func:`!_overlapped.WSAConnect` and :func:`!_overlapped.Overlapped.WSASendTo` functions.
|
|
@ -831,8 +831,8 @@ _overlapped_WSAConnect(PyObject *module, PyObject *const *args, Py_ssize_t nargs
|
||||||
HANDLE ConnectSocket;
|
HANDLE ConnectSocket;
|
||||||
PyObject *AddressObj;
|
PyObject *AddressObj;
|
||||||
|
|
||||||
if (!_PyArg_ParseStack(args, nargs, ""F_HANDLE"O:WSAConnect",
|
if (!_PyArg_ParseStack(args, nargs, ""F_HANDLE"O!:WSAConnect",
|
||||||
&ConnectSocket, &AddressObj)) {
|
&ConnectSocket, &PyTuple_Type, &AddressObj)) {
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
return_value = _overlapped_WSAConnect_impl(module, ConnectSocket, AddressObj);
|
return_value = _overlapped_WSAConnect_impl(module, ConnectSocket, AddressObj);
|
||||||
|
@ -864,8 +864,8 @@ _overlapped_Overlapped_WSASendTo(OverlappedObject *self, PyObject *const *args,
|
||||||
DWORD flags;
|
DWORD flags;
|
||||||
PyObject *AddressObj;
|
PyObject *AddressObj;
|
||||||
|
|
||||||
if (!_PyArg_ParseStack(args, nargs, ""F_HANDLE"OkO:WSASendTo",
|
if (!_PyArg_ParseStack(args, nargs, ""F_HANDLE"OkO!:WSASendTo",
|
||||||
&handle, &bufobj, &flags, &AddressObj)) {
|
&handle, &bufobj, &flags, &PyTuple_Type, &AddressObj)) {
|
||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
return_value = _overlapped_Overlapped_WSASendTo_impl(self, handle, bufobj, flags, AddressObj);
|
return_value = _overlapped_Overlapped_WSASendTo_impl(self, handle, bufobj, flags, AddressObj);
|
||||||
|
@ -905,4 +905,4 @@ _overlapped_Overlapped_WSARecvFrom(OverlappedObject *self, PyObject *const *args
|
||||||
exit:
|
exit:
|
||||||
return return_value;
|
return return_value;
|
||||||
}
|
}
|
||||||
/*[clinic end generated code: output=d3215a6ca589735a input=a9049054013a1b77]*/
|
/*[clinic end generated code: output=e685b61b3da0524d input=a9049054013a1b77]*/
|
||||||
|
|
|
@ -1638,7 +1638,7 @@ Overlapped_traverse(OverlappedObject *self, visitproc visit, void *arg)
|
||||||
_overlapped.WSAConnect
|
_overlapped.WSAConnect
|
||||||
|
|
||||||
client_handle as ConnectSocket: HANDLE
|
client_handle as ConnectSocket: HANDLE
|
||||||
address_as_bytes as AddressObj: object
|
address_as_bytes as AddressObj: object(subclass_of='&PyTuple_Type')
|
||||||
/
|
/
|
||||||
|
|
||||||
Bind a remote address to a connectionless (UDP) socket.
|
Bind a remote address to a connectionless (UDP) socket.
|
||||||
|
@ -1647,7 +1647,7 @@ Bind a remote address to a connectionless (UDP) socket.
|
||||||
static PyObject *
|
static PyObject *
|
||||||
_overlapped_WSAConnect_impl(PyObject *module, HANDLE ConnectSocket,
|
_overlapped_WSAConnect_impl(PyObject *module, HANDLE ConnectSocket,
|
||||||
PyObject *AddressObj)
|
PyObject *AddressObj)
|
||||||
/*[clinic end generated code: output=ea0b4391e94dad63 input=169f8075e9ae7fa4]*/
|
/*[clinic end generated code: output=ea0b4391e94dad63 input=7cf65313d49c015a]*/
|
||||||
{
|
{
|
||||||
char AddressBuf[sizeof(struct sockaddr_in6)];
|
char AddressBuf[sizeof(struct sockaddr_in6)];
|
||||||
SOCKADDR *Address = (SOCKADDR*)AddressBuf;
|
SOCKADDR *Address = (SOCKADDR*)AddressBuf;
|
||||||
|
@ -1681,7 +1681,7 @@ _overlapped.Overlapped.WSASendTo
|
||||||
handle: HANDLE
|
handle: HANDLE
|
||||||
buf as bufobj: object
|
buf as bufobj: object
|
||||||
flags: DWORD
|
flags: DWORD
|
||||||
address_as_bytes as AddressObj: object
|
address_as_bytes as AddressObj: object(subclass_of='&PyTuple_Type')
|
||||||
/
|
/
|
||||||
|
|
||||||
Start overlapped sendto over a connectionless (UDP) socket.
|
Start overlapped sendto over a connectionless (UDP) socket.
|
||||||
|
@ -1691,7 +1691,7 @@ static PyObject *
|
||||||
_overlapped_Overlapped_WSASendTo_impl(OverlappedObject *self, HANDLE handle,
|
_overlapped_Overlapped_WSASendTo_impl(OverlappedObject *self, HANDLE handle,
|
||||||
PyObject *bufobj, DWORD flags,
|
PyObject *bufobj, DWORD flags,
|
||||||
PyObject *AddressObj)
|
PyObject *AddressObj)
|
||||||
/*[clinic end generated code: output=fe0ff55eb60d65e1 input=f709e6ecebd9bc18]*/
|
/*[clinic end generated code: output=fe0ff55eb60d65e1 input=932a34941465df43]*/
|
||||||
{
|
{
|
||||||
char AddressBuf[sizeof(struct sockaddr_in6)];
|
char AddressBuf[sizeof(struct sockaddr_in6)];
|
||||||
SOCKADDR *Address = (SOCKADDR*)AddressBuf;
|
SOCKADDR *Address = (SOCKADDR*)AddressBuf;
|
||||||
|
|
Loading…
Reference in New Issue