Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
735171e3
Kaydet (Commit)
735171e3
authored
Eyl 11, 2018
tarafından
Oren Milman
Kaydeden (comit)
Benjamin Peterson
Eyl 11, 2018
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
closes bpo-29832: Remove "getsockaddrarg" from error messages. (GH-3163)
üst
73870bfe
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
121 additions
and
60 deletions
+121
-60
2017-09-12-08-11-01.bpo-29832.Kuf2M7.rst
...ore and Builtins/2017-09-12-08-11-01.bpo-29832.Kuf2M7.rst
+2
-0
socketmodule.c
Modules/socketmodule.c
+119
-60
No files found.
Misc/NEWS.d/next/Core and Builtins/2017-09-12-08-11-01.bpo-29832.Kuf2M7.rst
0 → 100644
Dosyayı görüntüle @
735171e3
Remove references to 'getsockaddrarg' from various socket error messages.
Patch by Oren Milman.
Modules/socketmodule.c
Dosyayı görüntüle @
735171e3
...
@@ -1583,7 +1583,7 @@ idna_converter(PyObject *obj, struct maybe_idna *data)
...
@@ -1583,7 +1583,7 @@ idna_converter(PyObject *obj, struct maybe_idna *data)
static
int
static
int
getsockaddrarg
(
PySocketSockObject
*
s
,
PyObject
*
args
,
getsockaddrarg
(
PySocketSockObject
*
s
,
PyObject
*
args
,
struct
sockaddr
*
addr_ret
,
int
*
len_ret
)
struct
sockaddr
*
addr_ret
,
int
*
len_ret
,
const
char
*
caller
)
{
{
switch
(
s
->
sock_family
)
{
switch
(
s
->
sock_family
)
{
...
@@ -1649,13 +1649,17 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -1649,13 +1649,17 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
if
(
!
PyTuple_Check
(
args
))
{
if
(
!
PyTuple_Check
(
args
))
{
PyErr_Format
(
PyErr_Format
(
PyExc_TypeError
,
PyExc_TypeError
,
"getsockaddrarg: "
"%s(): AF_NETLINK address must be tuple, not %.500s"
,
"AF_NETLINK address must be tuple, not %.500s"
,
caller
,
Py_TYPE
(
args
)
->
tp_name
);
Py_TYPE
(
args
)
->
tp_name
);
return
0
;
return
0
;
}
}
if
(
!
PyArg_ParseTuple
(
args
,
"II:getsockaddrarg"
,
&
pid
,
&
groups
))
if
(
!
PyArg_ParseTuple
(
args
,
"II;AF_NETLINK address must be a pair "
"(pid, groups)"
,
&
pid
,
&
groups
))
{
return
0
;
return
0
;
}
addr
->
nl_family
=
AF_NETLINK
;
addr
->
nl_family
=
AF_NETLINK
;
addr
->
nl_pid
=
pid
;
addr
->
nl_pid
=
pid
;
addr
->
nl_groups
=
groups
;
addr
->
nl_groups
=
groups
;
...
@@ -1703,14 +1707,22 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -1703,14 +1707,22 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
if
(
!
PyTuple_Check
(
args
))
{
if
(
!
PyTuple_Check
(
args
))
{
PyErr_Format
(
PyErr_Format
(
PyExc_TypeError
,
PyExc_TypeError
,
"getsockaddrarg: "
"%s(): AF_INET address must be tuple, not %.500s"
,
"AF_INET address must be tuple, not %.500s"
,
caller
,
Py_TYPE
(
args
)
->
tp_name
);
Py_TYPE
(
args
)
->
tp_name
);
return
0
;
return
0
;
}
}
if
(
!
PyArg_ParseTuple
(
args
,
"O&i:getsockaddrarg"
,
if
(
!
PyArg_ParseTuple
(
args
,
"O&i;AF_INET address must be a pair "
"(host, port)"
,
idna_converter
,
&
host
,
&
port
))
idna_converter
,
&
host
,
&
port
))
{
assert
(
PyErr_Occurred
());
if
(
PyErr_ExceptionMatches
(
PyExc_OverflowError
))
{
PyErr_Format
(
PyExc_OverflowError
,
"%s(): port must be 0-65535."
,
caller
);
}
return
0
;
return
0
;
}
addr
=
(
struct
sockaddr_in
*
)
addr_ret
;
addr
=
(
struct
sockaddr_in
*
)
addr_ret
;
result
=
setipaddr
(
host
.
buf
,
(
struct
sockaddr
*
)
addr
,
result
=
setipaddr
(
host
.
buf
,
(
struct
sockaddr
*
)
addr
,
sizeof
(
*
addr
),
AF_INET
);
sizeof
(
*
addr
),
AF_INET
);
...
@@ -1718,9 +1730,9 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -1718,9 +1730,9 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
if
(
result
<
0
)
if
(
result
<
0
)
return
0
;
return
0
;
if
(
port
<
0
||
port
>
0xffff
)
{
if
(
port
<
0
||
port
>
0xffff
)
{
PyErr_
SetString
(
PyErr_
Format
(
PyExc_OverflowError
,
PyExc_OverflowError
,
"
getsockaddrarg: port must be 0-65535."
);
"
%s(): port must be 0-65535."
,
caller
);
return
0
;
return
0
;
}
}
addr
->
sin_family
=
AF_INET
;
addr
->
sin_family
=
AF_INET
;
...
@@ -1740,14 +1752,21 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -1740,14 +1752,21 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
if
(
!
PyTuple_Check
(
args
))
{
if
(
!
PyTuple_Check
(
args
))
{
PyErr_Format
(
PyErr_Format
(
PyExc_TypeError
,
PyExc_TypeError
,
"getsockaddrarg: "
"%s(): AF_INET6 address must be tuple, not %.500s"
,
"AF_INET6 address must be tuple, not %.500s"
,
caller
,
Py_TYPE
(
args
)
->
tp_name
);
Py_TYPE
(
args
)
->
tp_name
);
return
0
;
return
0
;
}
}
if
(
!
PyArg_ParseTuple
(
args
,
"O&i|II"
,
if
(
!
PyArg_ParseTuple
(
args
,
"O&i|II;AF_INET6 address must be a tuple "
"(host, port[, flowinfo[, scopeid]])"
,
idna_converter
,
&
host
,
&
port
,
&
flowinfo
,
idna_converter
,
&
host
,
&
port
,
&
flowinfo
,
&
scope_id
))
{
&
scope_id
))
{
assert
(
PyErr_Occurred
());
if
(
PyErr_ExceptionMatches
(
PyExc_OverflowError
))
{
PyErr_Format
(
PyExc_OverflowError
,
"%s(): port must be 0-65535."
,
caller
);
}
return
0
;
return
0
;
}
}
addr
=
(
struct
sockaddr_in6
*
)
addr_ret
;
addr
=
(
struct
sockaddr_in6
*
)
addr_ret
;
...
@@ -1757,15 +1776,15 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -1757,15 +1776,15 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
if
(
result
<
0
)
if
(
result
<
0
)
return
0
;
return
0
;
if
(
port
<
0
||
port
>
0xffff
)
{
if
(
port
<
0
||
port
>
0xffff
)
{
PyErr_
SetString
(
PyErr_
Format
(
PyExc_OverflowError
,
PyExc_OverflowError
,
"
getsockaddrarg: port must be 0-65535."
);
"
%s(): port must be 0-65535."
,
caller
);
return
0
;
return
0
;
}
}
if
(
flowinfo
>
0xfffff
)
{
if
(
flowinfo
>
0xfffff
)
{
PyErr_
SetString
(
PyErr_
Format
(
PyExc_OverflowError
,
PyExc_OverflowError
,
"
getsockaddrarg: flowinfo must be 0-1048575."
);
"
%s(): flowinfo must be 0-1048575."
,
caller
);
return
0
;
return
0
;
}
}
addr
->
sin6_family
=
s
->
sock_family
;
addr
->
sin6_family
=
s
->
sock_family
;
...
@@ -1791,8 +1810,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -1791,8 +1810,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
_BT_L2_MEMB
(
addr
,
family
)
=
AF_BLUETOOTH
;
_BT_L2_MEMB
(
addr
,
family
)
=
AF_BLUETOOTH
;
if
(
!
PyArg_ParseTuple
(
args
,
"si"
,
&
straddr
,
if
(
!
PyArg_ParseTuple
(
args
,
"si"
,
&
straddr
,
&
_BT_L2_MEMB
(
addr
,
psm
)))
{
&
_BT_L2_MEMB
(
addr
,
psm
)))
{
PyErr_
SetString
(
PyExc_OSError
,
"getsockaddrarg: "
PyErr_
Format
(
PyExc_OSError
,
"wrong format"
);
"%s(): wrong format"
,
caller
);
return
0
;
return
0
;
}
}
if
(
setbdaddr
(
straddr
,
&
_BT_L2_MEMB
(
addr
,
bdaddr
))
<
0
)
if
(
setbdaddr
(
straddr
,
&
_BT_L2_MEMB
(
addr
,
bdaddr
))
<
0
)
...
@@ -1810,8 +1829,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -1810,8 +1829,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
_BT_RC_MEMB
(
addr
,
family
)
=
AF_BLUETOOTH
;
_BT_RC_MEMB
(
addr
,
family
)
=
AF_BLUETOOTH
;
if
(
!
PyArg_ParseTuple
(
args
,
"si"
,
&
straddr
,
if
(
!
PyArg_ParseTuple
(
args
,
"si"
,
&
straddr
,
&
_BT_RC_MEMB
(
addr
,
channel
)))
{
&
_BT_RC_MEMB
(
addr
,
channel
)))
{
PyErr_
SetString
(
PyExc_OSError
,
"getsockaddrarg: "
PyErr_
Format
(
PyExc_OSError
,
"wrong format"
);
"%s(): wrong format"
,
caller
);
return
0
;
return
0
;
}
}
if
(
setbdaddr
(
straddr
,
&
_BT_RC_MEMB
(
addr
,
bdaddr
))
<
0
)
if
(
setbdaddr
(
straddr
,
&
_BT_RC_MEMB
(
addr
,
bdaddr
))
<
0
)
...
@@ -1827,8 +1846,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -1827,8 +1846,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
const
char
*
straddr
;
const
char
*
straddr
;
_BT_HCI_MEMB
(
addr
,
family
)
=
AF_BLUETOOTH
;
_BT_HCI_MEMB
(
addr
,
family
)
=
AF_BLUETOOTH
;
if
(
!
PyBytes_Check
(
args
))
{
if
(
!
PyBytes_Check
(
args
))
{
PyErr_
SetString
(
PyExc_OSError
,
"getsockaddrarg
: "
PyErr_
Format
(
PyExc_OSError
,
"%s
: "
"wrong format"
);
"wrong format"
,
caller
);
return
0
;
return
0
;
}
}
straddr
=
PyBytes_AS_STRING
(
args
);
straddr
=
PyBytes_AS_STRING
(
args
);
...
@@ -1837,8 +1856,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -1837,8 +1856,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
#else
/* __NetBSD__ || __DragonFly__ */
#else
/* __NetBSD__ || __DragonFly__ */
_BT_HCI_MEMB
(
addr
,
family
)
=
AF_BLUETOOTH
;
_BT_HCI_MEMB
(
addr
,
family
)
=
AF_BLUETOOTH
;
if
(
!
PyArg_ParseTuple
(
args
,
"i"
,
&
_BT_HCI_MEMB
(
addr
,
dev
)))
{
if
(
!
PyArg_ParseTuple
(
args
,
"i"
,
&
_BT_HCI_MEMB
(
addr
,
dev
)))
{
PyErr_
SetString
(
PyExc_OSError
,
"getsockaddrarg: "
PyErr_
Format
(
PyExc_OSError
,
"wrong format"
);
"%s(): wrong format"
,
caller
);
return
0
;
return
0
;
}
}
#endif
/* !(__NetBSD__ || __DragonFly__) */
#endif
/* !(__NetBSD__ || __DragonFly__) */
...
@@ -1854,8 +1873,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -1854,8 +1873,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
addr
=
(
struct
sockaddr_sco
*
)
addr_ret
;
addr
=
(
struct
sockaddr_sco
*
)
addr_ret
;
_BT_SCO_MEMB
(
addr
,
family
)
=
AF_BLUETOOTH
;
_BT_SCO_MEMB
(
addr
,
family
)
=
AF_BLUETOOTH
;
if
(
!
PyBytes_Check
(
args
))
{
if
(
!
PyBytes_Check
(
args
))
{
PyErr_
SetString
(
PyExc_OSError
,
"getsockaddrarg: "
PyErr_
Format
(
PyExc_OSError
,
"wrong format"
);
"%s(): wrong format"
,
caller
);
return
0
;
return
0
;
}
}
straddr
=
PyBytes_AS_STRING
(
args
);
straddr
=
PyBytes_AS_STRING
(
args
);
...
@@ -1867,7 +1886,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -1867,7 +1886,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
}
}
#endif
/* !__FreeBSD__ */
#endif
/* !__FreeBSD__ */
default:
default:
PyErr_SetString
(
PyExc_OSError
,
"getsockaddrarg: unknown Bluetooth protocol"
);
PyErr_Format
(
PyExc_OSError
,
"%s(): unknown Bluetooth protocol"
,
caller
);
return
0
;
return
0
;
}
}
}
}
...
@@ -1887,15 +1907,26 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -1887,15 +1907,26 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
if
(
!
PyTuple_Check
(
args
))
{
if
(
!
PyTuple_Check
(
args
))
{
PyErr_Format
(
PyErr_Format
(
PyExc_TypeError
,
PyExc_TypeError
,
"getsockaddrarg: "
"%s(): AF_PACKET address must be tuple, not %.500s"
,
"AF_PACKET address must be tuple, not %.500s"
,
caller
,
Py_TYPE
(
args
)
->
tp_name
);
Py_TYPE
(
args
)
->
tp_name
);
return
0
;
return
0
;
}
}
if
(
!
PyArg_ParseTuple
(
args
,
"si|iiy*"
,
&
interfaceName
,
/* XXX: improve the default error message according to the
&
protoNumber
,
&
pkttype
,
&
hatype
,
documentation of AF_PACKET, which would be added as part
of bpo-25041. */
if
(
!
PyArg_ParseTuple
(
args
,
"si|iiy*;AF_PACKET address must be a tuple of "
"two to five elements"
,
&
interfaceName
,
&
protoNumber
,
&
pkttype
,
&
hatype
,
&
haddr
))
&
haddr
))
{
assert
(
PyErr_Occurred
());
if
(
PyErr_ExceptionMatches
(
PyExc_OverflowError
))
{
PyErr_Format
(
PyExc_OverflowError
,
"%s(): address argument out of range"
,
caller
);
}
return
0
;
return
0
;
}
strncpy
(
ifr
.
ifr_name
,
interfaceName
,
sizeof
(
ifr
.
ifr_name
));
strncpy
(
ifr
.
ifr_name
,
interfaceName
,
sizeof
(
ifr
.
ifr_name
));
ifr
.
ifr_name
[(
sizeof
(
ifr
.
ifr_name
))
-
1
]
=
'\0'
;
ifr
.
ifr_name
[(
sizeof
(
ifr
.
ifr_name
))
-
1
]
=
'\0'
;
if
(
ioctl
(
s
->
sock_fd
,
SIOCGIFINDEX
,
&
ifr
)
<
0
)
{
if
(
ioctl
(
s
->
sock_fd
,
SIOCGIFINDEX
,
&
ifr
)
<
0
)
{
...
@@ -1910,9 +1941,9 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -1910,9 +1941,9 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
return
0
;
return
0
;
}
}
if
(
protoNumber
<
0
||
protoNumber
>
0xffff
)
{
if
(
protoNumber
<
0
||
protoNumber
>
0xffff
)
{
PyErr_
SetString
(
PyErr_
Format
(
PyExc_OverflowError
,
PyExc_OverflowError
,
"
getsockaddrarg: protoNumber must be 0-65535."
);
"
%s(): protoNumber must be 0-65535."
,
caller
);
PyBuffer_Release
(
&
haddr
);
PyBuffer_Release
(
&
haddr
);
return
0
;
return
0
;
}
}
...
@@ -1944,16 +1975,18 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -1944,16 +1975,18 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
if
(
!
PyTuple_Check
(
args
))
{
if
(
!
PyTuple_Check
(
args
))
{
PyErr_Format
(
PyErr_Format
(
PyExc_TypeError
,
PyExc_TypeError
,
"getsockaddrarg: "
"%s(): AF_TIPC address must be tuple, not %.500s"
,
"AF_TIPC address must be tuple, not %.500s"
,
caller
,
Py_TYPE
(
args
)
->
tp_name
);
Py_TYPE
(
args
)
->
tp_name
);
return
0
;
return
0
;
}
}
if
(
!
PyArg_ParseTuple
(
args
,
if
(
!
PyArg_ParseTuple
(
args
,
"IIII|I;Invalid TIPC address format"
,
"IIII|I;AF_TIPC address must be a tuple "
&
atype
,
&
v1
,
&
v2
,
&
v3
,
&
scope
))
"(addr_type, v1, v2, v3[, scope])"
,
&
atype
,
&
v1
,
&
v2
,
&
v3
,
&
scope
))
{
return
0
;
return
0
;
}
addr
=
(
struct
sockaddr_tipc
*
)
addr_ret
;
addr
=
(
struct
sockaddr_tipc
*
)
addr_ret
;
memset
(
addr
,
0
,
sizeof
(
struct
sockaddr_tipc
));
memset
(
addr
,
0
,
sizeof
(
struct
sockaddr_tipc
));
...
@@ -2002,9 +2035,19 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -2002,9 +2035,19 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
Py_ssize_t
len
;
Py_ssize_t
len
;
addr
=
(
struct
sockaddr_can
*
)
addr_ret
;
addr
=
(
struct
sockaddr_can
*
)
addr_ret
;
if
(
!
PyArg_ParseTuple
(
args
,
"O&"
,
PyUnicode_FSConverter
,
if
(
!
PyTuple_Check
(
args
))
{
&
interfaceName
))
PyErr_Format
(
PyExc_TypeError
,
"%s(): AF_CAN address must be tuple, not %.500s"
,
caller
,
Py_TYPE
(
args
)
->
tp_name
);
return
0
;
}
if
(
!
PyArg_ParseTuple
(
args
,
"O&;AF_CAN address must be a tuple "
"(interface, )"
,
PyUnicode_FSConverter
,
&
interfaceName
))
{
return
0
;
return
0
;
}
len
=
PyBytes_GET_SIZE
(
interfaceName
);
len
=
PyBytes_GET_SIZE
(
interfaceName
);
...
@@ -2081,8 +2124,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -2081,8 +2124,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
}
}
#endif
/* CAN_ISOTP */
#endif
/* CAN_ISOTP */
default:
default:
PyErr_
SetString
(
PyExc_OSError
,
PyErr_
Format
(
PyExc_OSError
,
"getsockaddrarg: unsupported CAN protocol"
);
"%s(): unsupported CAN protocol"
,
caller
);
return
0
;
return
0
;
}
}
#endif
/* AF_CAN && SIOCGIFINDEX */
#endif
/* AF_CAN && SIOCGIFINDEX */
...
@@ -2128,9 +2171,9 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -2128,9 +2171,9 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
addr
->
sc_unit
=
0
;
addr
->
sc_unit
=
0
;
}
else
if
(
!
PyArg_ParseTuple
(
args
,
"II"
,
}
else
if
(
!
PyArg_ParseTuple
(
args
,
"II"
,
&
(
addr
->
sc_id
),
&
(
addr
->
sc_unit
)))
{
&
(
addr
->
sc_id
),
&
(
addr
->
sc_unit
)))
{
PyErr_
SetString
(
PyExc_TypeError
,
"getsockaddrarg: "
PyErr_
Format
(
PyExc_TypeError
,
"expected str or tuple of two ints"
);
"%s(): PF_SYSTEM address must be a str or "
"a pair (id, unit)"
,
caller
);
return
0
;
return
0
;
}
}
...
@@ -2139,8 +2182,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -2139,8 +2182,8 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
}
}
#endif
/* SYSPROTO_CONTROL */
#endif
/* SYSPROTO_CONTROL */
default:
default:
PyErr_
SetString
(
PyExc_OSError
,
PyErr_
Format
(
PyExc_OSError
,
"getsockaddrarg: unsupported PF_SYSTEM protocol"
);
"%s(): unsupported PF_SYSTEM protocol"
,
caller
);
return
0
;
return
0
;
}
}
#endif
/* PF_SYSTEM */
#endif
/* PF_SYSTEM */
...
@@ -2155,9 +2198,19 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -2155,9 +2198,19 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
memset
(
sa
,
0
,
sizeof
(
*
sa
));
memset
(
sa
,
0
,
sizeof
(
*
sa
));
sa
->
salg_family
=
AF_ALG
;
sa
->
salg_family
=
AF_ALG
;
if
(
!
PyArg_ParseTuple
(
args
,
"ss|HH:getsockaddrarg"
,
if
(
!
PyTuple_Check
(
args
))
{
&
type
,
&
name
,
&
sa
->
salg_feat
,
&
sa
->
salg_mask
))
PyErr_Format
(
PyExc_TypeError
,
"%s(): AF_ALG address must be tuple, not %.500s"
,
caller
,
Py_TYPE
(
args
)
->
tp_name
);
return
0
;
}
if
(
!
PyArg_ParseTuple
(
args
,
"ss|HH;AF_ALG address must be a tuple "
"(type, name[, feat[, mask]])"
,
&
type
,
&
name
,
&
sa
->
salg_feat
,
&
sa
->
salg_mask
))
{
return
0
;
return
0
;
}
/* sockaddr_alg has fixed-sized char arrays for type and name */
/* sockaddr_alg has fixed-sized char arrays for type and name */
if
(
strlen
(
type
)
>
sizeof
(
sa
->
salg_type
))
{
if
(
strlen
(
type
)
>
sizeof
(
sa
->
salg_type
))
{
PyErr_SetString
(
PyExc_ValueError
,
"AF_ALG type too long."
);
PyErr_SetString
(
PyExc_ValueError
,
"AF_ALG type too long."
);
...
@@ -2178,7 +2231,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
...
@@ -2178,7 +2231,7 @@ getsockaddrarg(PySocketSockObject *s, PyObject *args,
/* More cases here... */
/* More cases here... */
default:
default:
PyErr_
SetString
(
PyExc_OSError
,
"getsockaddrarg: bad family"
);
PyErr_
Format
(
PyExc_OSError
,
"%s(): bad family"
,
caller
);
return
0
;
return
0
;
}
}
...
@@ -2910,8 +2963,9 @@ sock_bind(PySocketSockObject *s, PyObject *addro)
...
@@ -2910,8 +2963,9 @@ sock_bind(PySocketSockObject *s, PyObject *addro)
int
addrlen
;
int
addrlen
;
int
res
;
int
res
;
if
(
!
getsockaddrarg
(
s
,
addro
,
SAS2SA
(
&
addrbuf
),
&
addrlen
))
if
(
!
getsockaddrarg
(
s
,
addro
,
SAS2SA
(
&
addrbuf
),
&
addrlen
,
"bind"
))
{
return
NULL
;
return
NULL
;
}
Py_BEGIN_ALLOW_THREADS
Py_BEGIN_ALLOW_THREADS
res
=
bind
(
s
->
sock_fd
,
SAS2SA
(
&
addrbuf
),
addrlen
);
res
=
bind
(
s
->
sock_fd
,
SAS2SA
(
&
addrbuf
),
addrlen
);
Py_END_ALLOW_THREADS
Py_END_ALLOW_THREADS
...
@@ -3074,8 +3128,9 @@ sock_connect(PySocketSockObject *s, PyObject *addro)
...
@@ -3074,8 +3128,9 @@ sock_connect(PySocketSockObject *s, PyObject *addro)
int
addrlen
;
int
addrlen
;
int
res
;
int
res
;
if
(
!
getsockaddrarg
(
s
,
addro
,
SAS2SA
(
&
addrbuf
),
&
addrlen
))
if
(
!
getsockaddrarg
(
s
,
addro
,
SAS2SA
(
&
addrbuf
),
&
addrlen
,
"connect"
))
{
return
NULL
;
return
NULL
;
}
res
=
internal_connect
(
s
,
SAS2SA
(
&
addrbuf
),
addrlen
,
1
);
res
=
internal_connect
(
s
,
SAS2SA
(
&
addrbuf
),
addrlen
,
1
);
if
(
res
<
0
)
if
(
res
<
0
)
...
@@ -3100,8 +3155,9 @@ sock_connect_ex(PySocketSockObject *s, PyObject *addro)
...
@@ -3100,8 +3155,9 @@ sock_connect_ex(PySocketSockObject *s, PyObject *addro)
int
addrlen
;
int
addrlen
;
int
res
;
int
res
;
if
(
!
getsockaddrarg
(
s
,
addro
,
SAS2SA
(
&
addrbuf
),
&
addrlen
))
if
(
!
getsockaddrarg
(
s
,
addro
,
SAS2SA
(
&
addrbuf
),
&
addrlen
,
"connect_ex"
))
{
return
NULL
;
return
NULL
;
}
res
=
internal_connect
(
s
,
SAS2SA
(
&
addrbuf
),
addrlen
,
0
);
res
=
internal_connect
(
s
,
SAS2SA
(
&
addrbuf
),
addrlen
,
0
);
if
(
res
<
0
)
if
(
res
<
0
)
...
@@ -4100,7 +4156,7 @@ sock_sendto(PySocketSockObject *s, PyObject *args)
...
@@ -4100,7 +4156,7 @@ sock_sendto(PySocketSockObject *s, PyObject *args)
return
select_error
();
return
select_error
();
}
}
if
(
!
getsockaddrarg
(
s
,
addro
,
SAS2SA
(
&
addrbuf
),
&
addrlen
))
{
if
(
!
getsockaddrarg
(
s
,
addro
,
SAS2SA
(
&
addrbuf
),
&
addrlen
,
"sendto"
))
{
PyBuffer_Release
(
&
pbuf
);
PyBuffer_Release
(
&
pbuf
);
return
NULL
;
return
NULL
;
}
}
...
@@ -4231,8 +4287,11 @@ sock_sendmsg(PySocketSockObject *s, PyObject *args)
...
@@ -4231,8 +4287,11 @@ sock_sendmsg(PySocketSockObject *s, PyObject *args)
/* Parse destination address. */
/* Parse destination address. */
if
(
addr_arg
!=
NULL
&&
addr_arg
!=
Py_None
)
{
if
(
addr_arg
!=
NULL
&&
addr_arg
!=
Py_None
)
{
if
(
!
getsockaddrarg
(
s
,
addr_arg
,
SAS2SA
(
&
addrbuf
),
&
addrlen
))
if
(
!
getsockaddrarg
(
s
,
addr_arg
,
SAS2SA
(
&
addrbuf
),
&
addrlen
,
"sendmsg"
))
{
goto
finally
;
goto
finally
;
}
msg
.
msg_name
=
&
addrbuf
;
msg
.
msg_name
=
&
addrbuf
;
msg
.
msg_namelen
=
addrlen
;
msg
.
msg_namelen
=
addrlen
;
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment