|
3 | 3 | from test.support import os_helper |
4 | 4 | from test.support import socket_helper |
5 | 5 | from test.support import threading_helper |
| 6 | +from test.support import warnings_helper |
6 | 7 |
|
7 | 8 | import _thread as thread |
8 | 9 | import array |
@@ -165,6 +166,15 @@ def socket_setdefaulttimeout(timeout): |
165 | 166 | socket.setdefaulttimeout(old_timeout) |
166 | 167 |
|
167 | 168 |
|
| 169 | +@contextlib.contextmanager |
| 170 | +def catch_mailformed_data_warning(quite=False): |
| 171 | + with warnings_helper.check_warnings( |
| 172 | + ("received malformed or improperly-truncated ancillary data", RuntimeWarning), |
| 173 | + quite=quite, |
| 174 | + ): |
| 175 | + yield |
| 176 | + |
| 177 | + |
168 | 178 | HAVE_SOCKET_CAN = _have_socket_can() |
169 | 179 |
|
170 | 180 | HAVE_SOCKET_CAN_ISOTP = _have_socket_can_isotp() |
@@ -3874,8 +3884,9 @@ def checkTruncatedArray(self, ancbuf, maxdata, mindata=0): |
3874 | 3884 | # mindata and maxdata bytes when received with buffer size |
3875 | 3885 | # ancbuf, and that any complete file descriptor numbers are |
3876 | 3886 | # valid. |
3877 | | - msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
3878 | | - len(MSG), ancbuf) |
| 3887 | + with catch_mailformed_data_warning(): |
| 3888 | + msg, ancdata, flags, addr = self.doRecvmsg(self.serv_sock, |
| 3889 | + len(MSG), ancbuf) |
3879 | 3890 | self.assertEqual(msg, MSG) |
3880 | 3891 | self.checkRecvmsgAddress(addr, self.cli_addr) |
3881 | 3892 | self.checkFlags(flags, eor=True, checkset=socket.MSG_CTRUNC) |
@@ -4217,8 +4228,9 @@ def testSingleCmsgTruncInData(self): |
4217 | 4228 | self.serv_sock.setsockopt(socket.IPPROTO_IPV6, |
4218 | 4229 | socket.IPV6_RECVHOPLIMIT, 1) |
4219 | 4230 | self.misc_event.set() |
4220 | | - msg, ancdata, flags, addr = self.doRecvmsg( |
4221 | | - self.serv_sock, len(MSG), socket.CMSG_LEN(SIZEOF_INT) - 1) |
| 4231 | + with catch_mailformed_data_warning(): |
| 4232 | + msg, ancdata, flags, addr = self.doRecvmsg( |
| 4233 | + self.serv_sock, len(MSG), socket.CMSG_LEN(SIZEOF_INT) - 1) |
4222 | 4234 |
|
4223 | 4235 | self.assertEqual(msg, MSG) |
4224 | 4236 | self.checkRecvmsgAddress(addr, self.cli_addr) |
@@ -4321,9 +4333,10 @@ def testSecondCmsgTruncInData(self): |
4321 | 4333 | self.serv_sock.setsockopt(socket.IPPROTO_IPV6, |
4322 | 4334 | socket.IPV6_RECVTCLASS, 1) |
4323 | 4335 | self.misc_event.set() |
4324 | | - msg, ancdata, flags, addr = self.doRecvmsg( |
4325 | | - self.serv_sock, len(MSG), |
4326 | | - socket.CMSG_SPACE(SIZEOF_INT) + socket.CMSG_LEN(SIZEOF_INT) - 1) |
| 4336 | + with catch_mailformed_data_warning(): |
| 4337 | + msg, ancdata, flags, addr = self.doRecvmsg( |
| 4338 | + self.serv_sock, len(MSG), |
| 4339 | + socket.CMSG_SPACE(SIZEOF_INT) + socket.CMSG_LEN(SIZEOF_INT) - 1) |
4327 | 4340 |
|
4328 | 4341 | self.assertEqual(msg, MSG) |
4329 | 4342 | self.checkRecvmsgAddress(addr, self.cli_addr) |
|
0 commit comments