From 798eaca6659f21dda2ea90e65b99ce9d2a1d4128 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C5=81ukasz=20Langa?= Date: Fri, 31 Oct 2025 16:37:20 +0100 Subject: [PATCH] [3.9] gh-98793: Fix typecheck in `overlapped.c` (GH-98835) (GH-98890) (GH-140825) (cherry picked from commit d3d1738acd4f62869d7f1e119c257e2ee46fd16f) Co-authored-by: Charlie Zhao Co-authored-by: Kumar Aditya <59607654+kumaraditya303@users.noreply.github.com> Co-authored-by: Petr Viktorin --- Lib/test/test_asyncio/test_windows_events.py | 11 +++++++++++ .../2022-10-29-03-40-18.gh-issue-98793.WSPB4A.rst | 1 + Modules/overlapped.c | 8 +++++--- 3 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 Misc/NEWS.d/next/Library/2022-10-29-03-40-18.gh-issue-98793.WSPB4A.rst diff --git a/Lib/test/test_asyncio/test_windows_events.py b/Lib/test/test_asyncio/test_windows_events.py index a8939d58540f..0e9d09af1428 100644 --- a/Lib/test/test_asyncio/test_windows_events.py +++ b/Lib/test/test_asyncio/test_windows_events.py @@ -279,6 +279,17 @@ class ProactorTests(WindowsEventsTestCase): stop.set() thr.join() + 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(WindowsEventsTestCase): diff --git a/Misc/NEWS.d/next/Library/2022-10-29-03-40-18.gh-issue-98793.WSPB4A.rst b/Misc/NEWS.d/next/Library/2022-10-29-03-40-18.gh-issue-98793.WSPB4A.rst new file mode 100644 index 000000000000..7b67af06cf3d --- /dev/null +++ b/Misc/NEWS.d/next/Library/2022-10-29-03-40-18.gh-issue-98793.WSPB4A.rst @@ -0,0 +1 @@ +Fix argument typechecks in :func:`!_overlapped.WSAConnect` and :func:`!_overlapped.Overlapped.WSASendTo` functions. diff --git a/Modules/overlapped.c b/Modules/overlapped.c index 5f8a82347355..0abe5b781138 100644 --- a/Modules/overlapped.c +++ b/Modules/overlapped.c @@ -1552,7 +1552,9 @@ overlapped_WSAConnect(PyObject *self, PyObject *args) int Length; int err; - if (!PyArg_ParseTuple(args, F_HANDLE "O", &ConnectSocket, &AddressObj)) { + + if (!PyArg_ParseTuple(args, F_HANDLE "O!:WSAConnect", + &ConnectSocket, &PyTuple_Type, &AddressObj)) { return NULL; } @@ -1598,8 +1600,8 @@ Overlapped_WSASendTo(OverlappedObject *self, PyObject *args) int ret; DWORD err; - if (!PyArg_ParseTuple(args, F_HANDLE "O" F_DWORD "O", - &handle, &bufobj, &flags, &AddressObj)) + if (!PyArg_ParseTuple(args, F_HANDLE "OkO!:WSASendTo", + &handle, &bufobj, &flags, &PyTuple_Type, &AddressObj)) { return NULL; } -- 2.47.3