Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 2b0cbb9

Browse files
[3.11] gh-98793: Fix typecheck in overlapped.c (GH-98835) (#98889)
Co-authored-by: Kumar Aditya <[email protected]> (cherry picked from commit 3ac8c0a)
1 parent a4f8db1 commit 2b0cbb9

File tree

4 files changed

+21
-9
lines changed

4 files changed

+21
-9
lines changed

Lib/test/test_asyncio/test_windows_events.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,17 @@ def test_read_self_pipe_restart(self):
239239
self.close_loop(self.loop)
240240
self.assertFalse(self.loop.call_exception_handler.called)
241241

242+
def test_address_argument_type_error(self):
243+
# Regression test for https://github.com/python/cpython/issues/98793
244+
proactor = self.loop._proactor
245+
sock = socket.socket(type=socket.SOCK_DGRAM)
246+
bad_address = None
247+
with self.assertRaises(TypeError):
248+
proactor.connect(sock, bad_address)
249+
with self.assertRaises(TypeError):
250+
proactor.sendto(sock, b'abc', addr=bad_address)
251+
sock.close()
252+
242253

243254
class WinPolicyTests(test_utils.TestCase):
244255

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix argument typechecks in :func:`!_overlapped.WSAConnect` and :func:`!_overlapped.Overlapped.WSASendTo` functions.

Modules/clinic/overlapped.c.h

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Modules/overlapped.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1684,7 +1684,7 @@ Overlapped_traverse(OverlappedObject *self, visitproc visit, void *arg)
16841684
_overlapped.WSAConnect
16851685
16861686
client_handle as ConnectSocket: HANDLE
1687-
address_as_bytes as AddressObj: object
1687+
address_as_bytes as AddressObj: object(subclass_of='&PyTuple_Type')
16881688
/
16891689
16901690
Bind a remote address to a connectionless (UDP) socket.
@@ -1693,7 +1693,7 @@ Bind a remote address to a connectionless (UDP) socket.
16931693
static PyObject *
16941694
_overlapped_WSAConnect_impl(PyObject *module, HANDLE ConnectSocket,
16951695
PyObject *AddressObj)
1696-
/*[clinic end generated code: output=ea0b4391e94dad63 input=169f8075e9ae7fa4]*/
1696+
/*[clinic end generated code: output=ea0b4391e94dad63 input=7cf65313d49c015a]*/
16971697
{
16981698
char AddressBuf[sizeof(struct sockaddr_in6)];
16991699
SOCKADDR *Address = (SOCKADDR*)AddressBuf;
@@ -1727,7 +1727,7 @@ _overlapped.Overlapped.WSASendTo
17271727
handle: HANDLE
17281728
buf as bufobj: Py_buffer
17291729
flags: DWORD
1730-
address_as_bytes as AddressObj: object
1730+
address_as_bytes as AddressObj: object(subclass_of='&PyTuple_Type')
17311731
/
17321732
17331733
Start overlapped sendto over a connectionless (UDP) socket.
@@ -1737,7 +1737,7 @@ static PyObject *
17371737
_overlapped_Overlapped_WSASendTo_impl(OverlappedObject *self, HANDLE handle,
17381738
Py_buffer *bufobj, DWORD flags,
17391739
PyObject *AddressObj)
1740-
/*[clinic end generated code: output=3cdedc4cfaeb70cd input=b7c1749a62e2e374]*/
1740+
/*[clinic end generated code: output=3cdedc4cfaeb70cd input=31f44cd4ab92fc33]*/
17411741
{
17421742
char AddressBuf[sizeof(struct sockaddr_in6)];
17431743
SOCKADDR *Address = (SOCKADDR*)AddressBuf;

0 commit comments

Comments
 (0)