@@ -1688,14 +1688,13 @@ idna_converter(PyObject *obj, struct maybe_idna *data)
1688
1688
1689
1689
static int
1690
1690
getsockaddrarg (PySocketSockObject * s , PyObject * args ,
1691
- struct sockaddr * addr_ret , int * len_ret , const char * caller )
1691
+ sock_addr_t * addrbuf , int * len_ret , const char * caller )
1692
1692
{
1693
1693
switch (s -> sock_family ) {
1694
1694
1695
1695
#if defined(AF_UNIX )
1696
1696
case AF_UNIX :
1697
1697
{
1698
- struct sockaddr_un * addr ;
1699
1698
Py_buffer path ;
1700
1699
int retval = 0 ;
1701
1700
@@ -1713,7 +1712,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
1713
1712
}
1714
1713
assert (path .len >= 0 );
1715
1714
1716
- addr = ( struct sockaddr_un * ) addr_ret ;
1715
+ struct sockaddr_un * addr = & addrbuf -> un ;
1717
1716
#ifdef __linux__
1718
1717
if (path .len > 0 && * (const char * )path .buf == 0 ) {
1719
1718
/* Linux abstract namespace extension */
@@ -1748,9 +1747,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
1748
1747
#if defined(AF_NETLINK )
1749
1748
case AF_NETLINK :
1750
1749
{
1751
- struct sockaddr_nl * addr ;
1752
1750
int pid , groups ;
1753
- addr = ( struct sockaddr_nl * ) addr_ret ;
1751
+ struct sockaddr_nl * addr = & addrbuf -> nl ;
1754
1752
if (!PyTuple_Check (args )) {
1755
1753
PyErr_Format (
1756
1754
PyExc_TypeError ,
@@ -1776,9 +1774,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
1776
1774
#if defined(AF_QIPCRTR )
1777
1775
case AF_QIPCRTR :
1778
1776
{
1779
- struct sockaddr_qrtr * addr ;
1780
1777
unsigned int node , port ;
1781
- addr = ( struct sockaddr_qrtr * ) addr_ret ;
1778
+ struct sockaddr_qrtr * addr = & addrbuf -> sq ;
1782
1779
if (!PyTuple_Check (args )) {
1783
1780
PyErr_Format (
1784
1781
PyExc_TypeError ,
@@ -1800,9 +1797,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
1800
1797
#if defined(AF_VSOCK )
1801
1798
case AF_VSOCK :
1802
1799
{
1803
- struct sockaddr_vm * addr ;
1800
+ struct sockaddr_vm * addr = & addrbuf -> vm ;
1804
1801
int port , cid ;
1805
- addr = (struct sockaddr_vm * )addr_ret ;
1806
1802
memset (addr , 0 , sizeof (struct sockaddr_vm ));
1807
1803
if (!PyTuple_Check (args )) {
1808
1804
PyErr_Format (
@@ -1830,7 +1826,6 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
1830
1826
1831
1827
case AF_INET :
1832
1828
{
1833
- struct sockaddr_in * addr ;
1834
1829
struct maybe_idna host = {NULL , NULL };
1835
1830
int port , result ;
1836
1831
if (!PyTuple_Check (args )) {
@@ -1852,7 +1847,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
1852
1847
}
1853
1848
return 0 ;
1854
1849
}
1855
- addr = ( struct sockaddr_in * ) addr_ret ;
1850
+ struct sockaddr_in * addr = & addrbuf -> in ;
1856
1851
result = setipaddr (host .buf , (struct sockaddr * )addr ,
1857
1852
sizeof (* addr ), AF_INET );
1858
1853
idna_cleanup (& host );
@@ -1873,7 +1868,6 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
1873
1868
#ifdef ENABLE_IPV6
1874
1869
case AF_INET6 :
1875
1870
{
1876
- struct sockaddr_in6 * addr ;
1877
1871
struct maybe_idna host = {NULL , NULL };
1878
1872
int port , result ;
1879
1873
unsigned int flowinfo , scope_id ;
@@ -1898,7 +1892,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
1898
1892
}
1899
1893
return 0 ;
1900
1894
}
1901
- addr = ( struct sockaddr_in6 * ) addr_ret ;
1895
+ struct sockaddr_in6 * addr = & addrbuf -> in6 ;
1902
1896
result = setipaddr (host .buf , (struct sockaddr * )addr ,
1903
1897
sizeof (* addr ), AF_INET6 );
1904
1898
idna_cleanup (& host );
@@ -1932,10 +1926,9 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
1932
1926
#ifdef BTPROTO_L2CAP
1933
1927
case BTPROTO_L2CAP :
1934
1928
{
1935
- struct sockaddr_l2 * addr ;
1936
1929
const char * straddr ;
1937
1930
1938
- addr = ( struct sockaddr_l2 * ) addr_ret ;
1931
+ struct sockaddr_l2 * addr = & addrbuf -> bt_l2 ;
1939
1932
memset (addr , 0 , sizeof (struct sockaddr_l2 ));
1940
1933
_BT_L2_MEMB (addr , family ) = AF_BLUETOOTH ;
1941
1934
if (!PyArg_ParseTuple (args , "si" , & straddr ,
@@ -1953,10 +1946,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
1953
1946
#endif /* BTPROTO_L2CAP */
1954
1947
case BTPROTO_RFCOMM :
1955
1948
{
1956
- struct sockaddr_rc * addr ;
1957
1949
const char * straddr ;
1958
-
1959
- addr = (struct sockaddr_rc * )addr_ret ;
1950
+ struct sockaddr_rc * addr = & addrbuf -> bt_rc ;
1960
1951
_BT_RC_MEMB (addr , family ) = AF_BLUETOOTH ;
1961
1952
if (!PyArg_ParseTuple (args , "si" , & straddr ,
1962
1953
& _BT_RC_MEMB (addr , channel ))) {
@@ -1973,7 +1964,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
1973
1964
#ifdef BTPROTO_HCI
1974
1965
case BTPROTO_HCI :
1975
1966
{
1976
- struct sockaddr_hci * addr = ( struct sockaddr_hci * ) addr_ret ;
1967
+ struct sockaddr_hci * addr = & addrbuf -> bt_hci ;
1977
1968
#if defined(__NetBSD__ ) || defined(__DragonFly__ )
1978
1969
const char * straddr ;
1979
1970
_BT_HCI_MEMB (addr , family ) = AF_BLUETOOTH ;
@@ -1999,10 +1990,9 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
1999
1990
#if !defined(__FreeBSD__ )
2000
1991
case BTPROTO_SCO :
2001
1992
{
2002
- struct sockaddr_sco * addr ;
2003
1993
const char * straddr ;
2004
1994
2005
- addr = ( struct sockaddr_sco * ) addr_ret ;
1995
+ struct sockaddr_sco * addr = & addrbuf -> bt_sco ;
2006
1996
_BT_SCO_MEMB (addr , family ) = AF_BLUETOOTH ;
2007
1997
if (!PyBytes_Check (args )) {
2008
1998
PyErr_Format (PyExc_OSError ,
@@ -2029,7 +2019,6 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
2029
2019
#if defined(HAVE_NETPACKET_PACKET_H ) && defined(SIOCGIFINDEX )
2030
2020
case AF_PACKET :
2031
2021
{
2032
- struct sockaddr_ll * addr ;
2033
2022
struct ifreq ifr ;
2034
2023
const char * interfaceName ;
2035
2024
int protoNumber ;
@@ -2080,7 +2069,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
2080
2069
PyBuffer_Release (& haddr );
2081
2070
return 0 ;
2082
2071
}
2083
- addr = ( struct sockaddr_ll * ) addr_ret ;
2072
+ struct sockaddr_ll * addr = & addrbuf -> ll ;
2084
2073
addr -> sll_family = AF_PACKET ;
2085
2074
addr -> sll_protocol = htons ((short )protoNumber );
2086
2075
addr -> sll_ifindex = ifr .ifr_ifindex ;
@@ -2103,7 +2092,6 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
2103
2092
{
2104
2093
unsigned int atype , v1 , v2 , v3 ;
2105
2094
unsigned int scope = TIPC_CLUSTER_SCOPE ;
2106
- struct sockaddr_tipc * addr ;
2107
2095
2108
2096
if (!PyTuple_Check (args )) {
2109
2097
PyErr_Format (
@@ -2121,7 +2109,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
2121
2109
return 0 ;
2122
2110
}
2123
2111
2124
- addr = ( struct sockaddr_tipc * ) addr_ret ;
2112
+ struct sockaddr_tipc * addr = & addrbuf -> tipc ;
2125
2113
memset (addr , 0 , sizeof (struct sockaddr_tipc ));
2126
2114
2127
2115
addr -> family = AF_TIPC ;
@@ -2162,11 +2150,10 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
2162
2150
#endif
2163
2151
#if defined(CAN_RAW ) || defined(CAN_BCM )
2164
2152
{
2165
- struct sockaddr_can * addr ;
2166
2153
PyObject * interfaceName ;
2167
2154
struct ifreq ifr ;
2168
2155
Py_ssize_t len ;
2169
- addr = ( struct sockaddr_can * ) addr_ret ;
2156
+ struct sockaddr_can * addr = & addrbuf -> can ;
2170
2157
2171
2158
if (!PyTuple_Check (args )) {
2172
2159
PyErr_Format (PyExc_TypeError ,
@@ -2213,13 +2200,12 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
2213
2200
#ifdef CAN_ISOTP
2214
2201
case CAN_ISOTP :
2215
2202
{
2216
- struct sockaddr_can * addr ;
2217
2203
PyObject * interfaceName ;
2218
2204
struct ifreq ifr ;
2219
2205
Py_ssize_t len ;
2220
2206
unsigned long int rx_id , tx_id ;
2221
2207
2222
- addr = ( struct sockaddr_can * ) addr_ret ;
2208
+ struct sockaddr_can * addr = & addrbuf -> can ;
2223
2209
2224
2210
if (!PyArg_ParseTuple (args , "O&kk" , PyUnicode_FSConverter ,
2225
2211
& interfaceName ,
@@ -2269,9 +2255,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
2269
2255
#ifdef SYSPROTO_CONTROL
2270
2256
case SYSPROTO_CONTROL :
2271
2257
{
2272
- struct sockaddr_ctl * addr ;
2273
-
2274
- addr = (struct sockaddr_ctl * )addr_ret ;
2258
+ struct sockaddr_ctl * addr = & addrbuf -> ctl ;
2275
2259
addr -> sc_family = AF_SYSTEM ;
2276
2260
addr -> ss_sysaddr = AF_SYS_CONTROL ;
2277
2261
@@ -2323,10 +2307,9 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
2323
2307
#ifdef HAVE_SOCKADDR_ALG
2324
2308
case AF_ALG :
2325
2309
{
2326
- struct sockaddr_alg * sa ;
2327
2310
const char * type ;
2328
2311
const char * name ;
2329
- sa = ( struct sockaddr_alg * ) addr_ret ;
2312
+ struct sockaddr_alg * sa = & addrbuf -> alg ;
2330
2313
2331
2314
memset (sa , 0 , sizeof (* sa ));
2332
2315
sa -> salg_family = AF_ALG ;
@@ -3110,7 +3093,7 @@ sock_bind(PySocketSockObject *s, PyObject *addro)
3110
3093
int addrlen ;
3111
3094
int res ;
3112
3095
3113
- if (!getsockaddrarg (s , addro , SAS2SA ( & addrbuf ) , & addrlen , "bind" )) {
3096
+ if (!getsockaddrarg (s , addro , & addrbuf , & addrlen , "bind" )) {
3114
3097
return NULL ;
3115
3098
}
3116
3099
@@ -3280,7 +3263,7 @@ sock_connect(PySocketSockObject *s, PyObject *addro)
3280
3263
int addrlen ;
3281
3264
int res ;
3282
3265
3283
- if (!getsockaddrarg (s , addro , SAS2SA ( & addrbuf ) , & addrlen , "connect" )) {
3266
+ if (!getsockaddrarg (s , addro , & addrbuf , & addrlen , "connect" )) {
3284
3267
return NULL ;
3285
3268
}
3286
3269
@@ -3311,7 +3294,7 @@ sock_connect_ex(PySocketSockObject *s, PyObject *addro)
3311
3294
int addrlen ;
3312
3295
int res ;
3313
3296
3314
- if (!getsockaddrarg (s , addro , SAS2SA ( & addrbuf ) , & addrlen , "connect_ex" )) {
3297
+ if (!getsockaddrarg (s , addro , & addrbuf , & addrlen , "connect_ex" )) {
3315
3298
return NULL ;
3316
3299
}
3317
3300
@@ -4316,7 +4299,7 @@ sock_sendto(PySocketSockObject *s, PyObject *args)
4316
4299
return select_error ();
4317
4300
}
4318
4301
4319
- if (!getsockaddrarg (s , addro , SAS2SA ( & addrbuf ) , & addrlen , "sendto" )) {
4302
+ if (!getsockaddrarg (s , addro , & addrbuf , & addrlen , "sendto" )) {
4320
4303
PyBuffer_Release (& pbuf );
4321
4304
return NULL ;
4322
4305
}
@@ -4451,7 +4434,7 @@ sock_sendmsg(PySocketSockObject *s, PyObject *args)
4451
4434
4452
4435
/* Parse destination address. */
4453
4436
if (addr_arg != NULL && addr_arg != Py_None ) {
4454
- if (!getsockaddrarg (s , addr_arg , SAS2SA ( & addrbuf ) , & addrlen ,
4437
+ if (!getsockaddrarg (s , addr_arg , & addrbuf , & addrlen ,
4455
4438
"sendmsg" ))
4456
4439
{
4457
4440
goto finally ;
0 commit comments